中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS中怎么自定義步驟進度條

發布時間:2021-07-24 15:33:30 來源:億速云 閱讀:192 作者:Leah 欄目:編程語言

iOS中怎么自定義步驟進度條,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

實現方法如下:

1.用進度條做的首先要解決的是進度條的高度問題,可以通過仿射變換來擴大高度。

progressView.transform = CGAffineTransformMakeScale(1.0f,2.0f);

2.用進度條要設置進度progress要與按鈕對應

通過步驟的索引來改變進度的值和按鈕的圖片。由于按鈕的左右有間隔所以要注意-1、0和最后一個的progress值。

3.擴展

看有一些類似查公交、車站運行的APP有的可以點擊站點,所以就用按鈕來做,這樣可以擴展。

4.代碼

//// StepProgressView.h// CustomProgress//// Created by City--Online on 15/12/12.// Copyright &copy; 2015年 City--Online. All rights reserved.//#import <UIKit/UIKit.h>@interface StepProgressView : UIView@property (nonatomic,assign) NSInteger stepIndex;+(instancetype)progressViewFrame:(CGRect)frame withTitleArray:(NSArray *)titleArray;@end

//// StepProgressView.m// CustomProgress//// Created by City--Online on 15/12/12.// Copyright &copy; 2015年 City--Online. All rights reserved.//#import "StepProgressView.h"static const float imgBtnWidth=18;@interface StepProgressView ()@property (nonatomic,strong) UIProgressView *progressView;//用UIButton防止以后有點擊事件@property (nonatomic,strong) NSMutableArray *imgBtnArray;@end@implementation StepProgressView+(instancetype)progressViewFrame:(CGRect)frame withTitleArray:(NSArray *)titleArray{ StepProgressView *stepProgressView=[[StepProgressView alloc]initWithFrame:frame]; //進度條 stepProgressView.progressView=[[UIProgressView alloc]initWithFrame:CGRectMake(0, 5, frame.size.width, 10)]; stepProgressView.progressView.progressViewStyle=UIProgressViewStyleBar; stepProgressView.progressView.transform = CGAffineTransformMakeScale(1.0f,2.0f); stepProgressView.progressView.progressTintColor=[UIColor redColor]; stepProgressView.progressView.trackTintColor=[UIColor blueColor]; stepProgressView.progressView.progress=0.5; [stepProgressView addSubview:stepProgressView.progressView]; stepProgressView.imgBtnArray=[[NSMutableArray alloc]init]; float _btnWidth=frame.size.width/(titleArray.count); for (int i=0; i<titleArray.count; i++) {  //圖片按鈕 UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom]; [btn setImage:[UIImage imageNamed:@"0.png"] forState:UIControlStateNormal]; [btn setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateSelected]; btn.frame=CGRectMake(_btnWidth/2+_btnWidth*i-imgBtnWidth/2, 0, imgBtnWidth, imgBtnWidth); btn.selected=YES; [stepProgressView addSubview:btn]; [stepProgressView.imgBtnArray addObject:btn]; //文字 UILabel *titleLabel=[[UILabel alloc]initWithFrame:CGRectMake(btn.center.x-_btnWidth/2, frame.size.height-20, _btnWidth, 20)]; titleLabel.text=[titleArray objectAtIndex:i]; [titleLabel setTextColor:[UIColor blackColor]]; titleLabel.textAlignment=NSTextAlignmentCenter; titleLabel.font=[UIFont systemFontOfSize:18]; [stepProgressView addSubview:titleLabel]; } stepProgressView.stepIndex=-1; return stepProgressView;}-(void)setStepIndex:(NSInteger)stepIndex{// 默認為-1 小于-1為-1 大于總數為總數 _stepIndex=stepIndex<-1?-1:stepIndex; _stepIndex=stepIndex >=_imgBtnArray.count-1?_imgBtnArray.count-1:stepIndex; float _btnWidth=self.bounds.size.width/(_imgBtnArray.count); for (int i=0; i<_imgBtnArray.count; i++) { UIButton *btn=[_imgBtnArray objectAtIndex:i]; if (i<=_stepIndex) {  btn.selected=YES; } else{  btn.selected=NO; } } if (_stepIndex==-1) { self.progressView.progress=0.0; } else if (_stepIndex==_imgBtnArray.count-1) { self.progressView.progress=1.0; } else { self.progressView.progress=(0.5+_stepIndex)*_btnWidth/self.frame.size.width; }}@end

5.使用和效果

NSArray *arr=@[@"區寶時尚",@"區寶時尚",@"時尚",@"區寶時尚",@"時尚"]; StepProgressView *stepView=[StepProgressView progressViewFrame:CGRectMake(0, 100, self.view.bounds.size.width, 60) withTitleArray:arr]; stepView.stepIndex=2; [self.view addSubview:stepView];

補充:上面的代碼有一個bug,例如stepIndex=-1時,_stepIndex=并不等-1,原來數組的count返回的是NSUInteger而stepIndex是NSInteger類型,所以需要強制轉換一下

stepIndex=stepIndex<-1?-1:stepIndex; _stepIndex = stepIndex >= (NSInteger)(_imgBtnArray.count-1) ? _imgBtnArray.count-1:stepIndex;

關于iOS中怎么自定義步驟進度條問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ios
AI

彩票| 巨鹿县| 朝阳县| 新巴尔虎右旗| 高碑店市| 巴南区| 周宁县| 汕头市| 平罗县| 镇江市| 松滋市| 射洪县| 丹寨县| 吴旗县| 易门县| 阿鲁科尔沁旗| 类乌齐县| 拉孜县| 鹤峰县| 丹阳市| 开阳县| 安乡县| 白河县| 英山县| 扶余县| 安远县| 富阳市| 景宁| 东辽县| 两当县| 宝清县| 元阳县| 大厂| 天峨县| 新竹县| 嘉定区| 蓬莱市| 嘉善县| 陵水| 嘉鱼县| 黑河市|