亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS實現步驟進度條功能實例代碼

2019-10-21 18:39:18
字體:
來源:轉載
供稿:網友

前言

在開發中,我們經常在很多場景下需要用到進度條,比如文件的下載,或者文件的上傳等。 本文主要給大家介紹的是一個步驟進度條效果,步驟進度條效果參考

iOS,步驟,進度條,例代碼

iOS UIKit 框架中并沒有提供類似的控件,我們可以使用 UIProgressView、UIView、UILabel 組合實現步驟進度條效果。

  • UIProgressView——實現水平的進度條效果;
  • UIView——把UIView裁剪成圓形,實現索引節點效果;
  • UILabel——每個節點下面的提示文字。

源碼

將步驟進度條封裝成一個 HQLStepView 類,它是 UIView 的子類。

HQLStepView.h 文件

#import <UIKit/UIKit.h>@interface HQLStepView : UIView// 指定初始化方法- (instancetype)initWithFrame:(CGRect)frame titlesArray:(NSArray *)titlesArray stepIndex:(NSUInteger)stepIndex;// 設置當前步驟- (void)setStepIndex:(NSUInteger)stepIndex animation:(BOOL)animation;@end

HQLStepView.m 文件

#import "HQLStepView.h"// 步驟條主題色#define TINT_COLOR [UIColor colorWithRed:35/255.f green:135/255.f blue:255/255.f alpha:1]@interface HQLStepView ()@property (nonatomic, copy) NSArray *titlesArray;@property (nonatomic, assign) NSUInteger stepIndex;@property (nonatomic, strong) UIProgressView *progressView;@property (nonatomic, strong) NSMutableArray *circleViewArray;@property (nonatomic, strong) NSMutableArray *titleLabelArray;@property (nonatomic, strong) UILabel *indicatorLabel;@end@implementation HQLStepView#pragma mark - Init- (instancetype)initWithFrame:(CGRect)frame titlesArray:(NSArray *)titlesArray stepIndex:(NSUInteger)stepIndex { self = [super initWithFrame:frame]; if (self) { _titlesArray = [titlesArray copy]; _stepIndex = stepIndex; // 進度條 [self addSubview:self.progressView];  for (NSString *title in _titlesArray) {    // 圓圈  UIView *circle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 13, 13)];  circle.backgroundColor = [UIColor lightGrayColor];  circle.layer.cornerRadius = 13.0f / 2;  [self addSubview:circle];  [self.circleViewArray addObject:circle];    // 標題  UILabel *label = [[UILabel alloc] init];  label.text = title;  label.font = [UIFont systemFontOfSize:14];  label.textAlignment = NSTextAlignmentCenter;  [self addSubview:label];  [self.titleLabelArray addObject:label]; }  // 當前索引數字 [self addSubview:self.indicatorLabel]; } return self;}// 布局更新頁面元素- (void)layoutSubviews { NSInteger perWidth = self.frame.size.width / self.titlesArray.count;  // 進度條 self.progressView.frame = CGRectMake(0, 0, self.frame.size.width - perWidth, 1); self.progressView.center = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 4);  CGFloat startX = self.progressView.frame.origin.x; for (int i = 0; i < self.titlesArray.count; i++) { // 圓圈 UIView *cycle = self.circleViewArray[i]; if (cycle) {  cycle.center = CGPointMake(i * perWidth + startX, self.progressView.center.y); }  // 標題 UILabel *label = self.titleLabelArray[i]; if (label) {  label.frame = CGRectMake(perWidth * i, self.frame.size.height / 2, self.frame.size.width / self.titlesArray.count, self.frame.size.height / 2 ); } } self.stepIndex = self.stepIndex;}#pragma mark - Custom Accessors- (UIProgressView *)progressView { if (!_progressView) { _progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault]; _progressView.progressTintColor = TINT_COLOR; _progressView.progress = self.stepIndex / ((self.titlesArray.count - 1) * 1.0); } return _progressView;}- (UILabel *)indicatorLabel { if (!_indicatorLabel) { _indicatorLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 23, 23)]; _indicatorLabel.textColor = TINT_COLOR; _indicatorLabel.textAlignment = NSTextAlignmentCenter; _indicatorLabel.backgroundColor = [UIColor whiteColor]; _indicatorLabel.layer.cornerRadius = 23.0f / 2; _indicatorLabel.layer.borderColor = [TINT_COLOR CGColor]; _indicatorLabel.layer.borderWidth = 1; _indicatorLabel.layer.masksToBounds = YES; } return _indicatorLabel;}- (NSMutableArray *)circleViewArray { if (!_circleViewArray) { _circleViewArray = [[NSMutableArray alloc] initWithCapacity:self.titlesArray.count]; } return _circleViewArray;}- (NSMutableArray *)titleLabelArray { if (!_titleLabelArray) { _titleLabelArray = [[NSMutableArray alloc] initWithCapacity:self.titlesArray.count]; } return _titleLabelArray;}// 設置當前進度索引,更新圓形圖片、文本顏色、當前索引數字- (void)setStepIndex:(NSUInteger)stepIndex { for (int i = 0; i < self.titlesArray.count; i++) { UIView *cycle = self.circleViewArray[i]; UILabel *label = self.titleLabelArray[i]; if (stepIndex >= i) {  cycle.backgroundColor = TINT_COLOR;  label.textColor = TINT_COLOR; } else {  cycle.backgroundColor = [UIColor lightGrayColor];  label.textColor = [UIColor lightGrayColor]; } }}#pragma mark - Public- (void)setStepIndex:(NSUInteger)stepIndex animation:(BOOL)animation { if (stepIndex < self.titlesArray.count) { // 更新顏色 self.stepIndex = stepIndex; // 設置進度條 [self.progressView setProgress:stepIndex / ((self.titlesArray.count - 1) * 1.0) animated:animation]; // 設置當前索引數字 self.indicatorLabel.text = [NSString stringWithFormat:@"%lu", stepIndex + 1]; self.indicatorLabel.center = ((UIView *)[self.circleViewArray objectAtIndex:stepIndex]).center; }}@end

接口調用:

- (void)viewDidLoad { [super viewDidLoad];  // 初始化 _hqlStepView = [[HQLStepView alloc] initWithFrame:CGRectMake(0, 200, self.view.frame.size.width, 60) titlesArray:@[@"第一步", @"第二步", @"第三步"] stepIndex:0]; [self.view addSubview:_hqlStepView];}- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated];  // 設置當前步驟,步驟索引=數組索引 [_hqlStepView setStepIndex:0 animation:YES];}

效果:

iOS,步驟,進度條,例代碼

因為 UIProgressView 實現的水平進度條高度值默認為1,設置frame是無效的??梢酝ㄟ^仿射變換的方式增加它的高度。

第三方框架

參考:

總結:

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品xxx| 精品免费在线视频| 亚洲男人天堂2023| 亚洲精品美女在线观看| 成人黄色网免费| 亚洲一区亚洲二区亚洲三区| 亚洲欧美日韩国产成人| 国产免费亚洲高清| 国产成人精彩在线视频九色| 日韩视频免费看| 成人国产精品色哟哟| 91精品国产自产在线| 91高清视频在线免费观看| 国产精品 欧美在线| 欧美裸身视频免费观看| 国内精品视频在线| 国产精品www网站| 国产91精品高潮白浆喷水| 日韩欧美a级成人黄色| 久久久www成人免费精品| 日韩国产激情在线| 日韩精品在线视频| 久久亚洲精品毛片| 日韩欧美aⅴ综合网站发布| 97欧美精品一区二区三区| 91九色单男在线观看| 国产精品免费一区二区三区都可以| 欧美床上激情在线观看| 青青久久aⅴ北条麻妃| 国产丝袜一区二区| 青草热久免费精品视频| 日韩精品极品毛片系列视频| 国产亚洲一区二区在线| 亚洲午夜激情免费视频| 日韩免费视频在线观看| 国模精品一区二区三区色天香| 国产经典一区二区| 78m国产成人精品视频| 久久精品色欧美aⅴ一区二区| 亚洲精品视频中文字幕| 久久久精品一区二区三区| 九色91av视频| 91精品国产综合久久香蕉的用户体验| 久久久999国产| 国产成人精品一区| 成人免费视频在线观看超级碰| 国产日韩欧美在线播放| 欧美剧在线观看| 91色琪琪电影亚洲精品久久| 欧美丝袜一区二区| 亚洲情综合五月天| 亚洲第一免费网站| 成人444kkkk在线观看| 国产不卡av在线免费观看| 国产a∨精品一区二区三区不卡| 亚洲第一精品夜夜躁人人爽| 国产精品旅馆在线| 91tv亚洲精品香蕉国产一区7ujn| 国产精品久久久久久久av电影| 久久男人av资源网站| 91美女高潮出水| 亚洲午夜未满十八勿入免费观看全集| 最近2019中文免费高清视频观看www99| 国产婷婷97碰碰久久人人蜜臀| 欧美精品福利在线| 伊人久久久久久久久久久| 亚洲午夜久久久久久久| 一区二区av在线| 亚洲精品wwwww| 日韩中文字幕欧美| 亚洲欧美国产精品专区久久| 国产免费一区二区三区在线能观看| 97视频在线观看视频免费视频| 亚洲天堂成人在线| 欧美国产日韩视频| 中文字幕欧美视频在线| 亚洲国产成人久久综合一区| 日韩中文字幕精品视频| 国产欧美日韩综合精品| 欧美在线精品免播放器视频| 色偷偷噜噜噜亚洲男人| 日本亚洲欧洲色| 亚洲第一视频网| 97香蕉超级碰碰久久免费软件| 久热国产精品视频| 2020欧美日韩在线视频| 国产亚洲欧美视频| 日韩免费高清在线观看| 国产精品视频在线播放| 91成人在线观看国产| 欧美精品一本久久男人的天堂| 美女视频黄免费的亚洲男人天堂| 亚洲全黄一级网站| 亚洲精品国产美女| 777777777亚洲妇女| 精品久久久久久久久久久| 欧美视频在线免费看| 亚洲日韩第一页| 亚洲天堂av电影| 中文字幕国产精品久久| 久久综合久中文字幕青草| 国产精品久久中文| 精品人伦一区二区三区蜜桃免费| 久久精品国产欧美激情| 亚洲黄色免费三级| 成人在线精品视频| 欧美日韩国产丝袜另类| 国产精彩精品视频| 国产91ⅴ在线精品免费观看| 国产亚洲视频在线| 亚洲精品中文字幕有码专区| 亚洲国产精品推荐| 成人中文字幕+乱码+中文字幕| 欧美专区在线视频| 九九九久久国产免费| 热久久美女精品天天吊色| 久久久亚洲天堂| 国产亚洲aⅴaaaaaa毛片| 亚洲无线码在线一区观看| 亚洲mm色国产网站| 中文字幕一区二区精品| 亚洲精品久久久久久久久久久久久| 中文精品99久久国产香蕉| 国自在线精品视频| 北条麻妃一区二区三区中文字幕| 国产偷亚洲偷欧美偷精品| 欧美日韩福利视频| 亚洲成成品网站| 国自产精品手机在线观看视频| 91精品国产高清自在线看超| 国产在线精品一区免费香蕉| 日韩国产中文字幕| 成人国产在线激情| 亚洲女人天堂成人av在线| 欧美午夜久久久| 欧美孕妇孕交黑巨大网站| 欧美日韩亚洲91| 日韩欧美精品在线观看| 欧美一区二区三区免费视| 日韩少妇与小伙激情| 2019中文字幕全在线观看| 日韩美女视频中文字幕| 精品高清一区二区三区| 日韩欧美在线字幕| 午夜精品久久久久久久久久久久久| 91高清视频在线免费观看| 国产精品爽黄69| 精品欧美激情精品一区| 欧美日韩一区二区免费在线观看| 亚洲成年人在线播放| 欧美国产日韩视频| 亚洲免费电影在线观看| 91高清视频在线免费观看| 91色中文字幕| 伊人久久久久久久久久| 欧美日韩激情小视频| 欧美午夜视频在线观看| 91国产美女视频| 亚洲欧美精品一区二区| 亚洲精品永久免费精品| 欧美视频裸体精品| 日韩专区中文字幕| 亚洲人成在线播放| 91国内揄拍国内精品对白|