A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Simpon 中级黑马   /  2016-10-11 14:05  /  2889 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Simpon 于 2016-10-19 11:33 编辑


原文出处:http://www.jianshu.com/p/f35c5809c41e
进度条在iOS开发中很常见的,我在项目开发中也写过好多进度条,有好多种类的,条形,圆形等,今天给大家总结一种条形的开发进度条。系统的进度条UIProgressView

简单思路: 1.自定义进度条先继承UIView 建立一个CustomBarProgressView 2.在.H文件中外漏的方法《开始的方法》《初始化的方法》 3.在.M文件中 利用定时器改变位置 实现进度条



#部分代码


[Objective-C] 纯文本查看 复制代码
-(instancetype)initWithFrame:(CGRect)frame withStartNum:(CGFloat)startNum withEndNum:(CGFloat)endNum withSignNum:(CGFloat)signNum withTime:(CGFloat)time{[/align]
[align=left]if (self = [super initWithFrame:frame]) {[/align]

[align=left]self.startNum =  startNum;[/align]
[align=left]self.endNum = endNum;[/align]
[align=left]self.signNum = signNum;[/align]

[align=left]if(time == 0){[/align]
[align=left]self.time  = 0.1;[/align]
[align=left]}else{[/align]
[align=left]self.time = time;[/align]
[align=left]}[/align]

[align=left][self setUpSubViews];[/align]
[align=left]}[/align]
[align=left]return self;[/align]
[align=left]}[/align]

[align=left]- (void)setUpSubViews[/align]
[align=left]{[/align]
[align=left]UIView *backView = [[UIView alloc] init];[/align]
[align=left]backView.backgroundColor =BoomViewColor;[/align]
[align=left]backView.layer.cornerRadius = CornerRadius;[/align]
[align=left]backView.layer.masksToBounds = YES;[/align]
[align=left][self addSubview:backView];[/align]
[align=left]self.backView = backView;[/align]

[align=left]UIView *fontView = [[UIView alloc] init];[/align]
[align=left]fontView.backgroundColor = UpViewColor;[/align]
[align=left]fontView.layer.cornerRadius = CornerRadius;[/align]
[align=left]fontView.layer.masksToBounds = YES;[/align]
[align=left][self addSubview:fontView];[/align]
[align=left]self.fontView = fontView;[/align]

[align=left]}[/align]

[align=left]-(void)progressViewStart{[/align]
[align=left]if (self.timer == nil) {[/align]
[align=left]dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{[/align]
[align=left]self.timer = [NSTimer scheduledTimerWithTimeInterval:self.time target:self selector:@selector(changeProgressViewFrame:) userInfo:nil repeats:YES];[/align]
[align=left][[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];[/align]
[align=left]});[/align]

[align=left]}[/align]
[align=left]}[/align]

[align=left]-(void)changeProgressViewFrame:(NSTimer *)timer{[/align]

[align=left]//位置计算[/align]
[align=left]CGFloat signProgress = (self.signNum - self.startNum) / (self.endNum - self.startNum);[/align]
[align=left]NSLog(@"==>>>%f",self.progress);[/align]
[align=left]if (self.progress >= signProgress){[/align]
[align=left][self.timer invalidate];[/align]
[align=left]self.timer = nil;[/align]
[align=left]return;[/align]
[align=left]}[/align]

[align=left]self.progress += 0.01;[/align]
[align=left][self setNeedsLayout];[/align]

[align=left]}[/align]

[align=left]-(void)layoutSubviews{[/align]
[align=left][super layoutSubviews];[/align]
[align=left]NSLog(@"==>>>%f",self.progress);[/align]
[align=left]self.backView.frame = self.bounds;[/align]
[align=left]self.fontView.frame = self.bounds;[/align]
[align=left]self.fontView.width =  self.width * self.progress;[/align]

[align=left]}


PS:可以自己增加 进度条文字等修改大小 样式
别小看任何人,越不起眼的人。往往会做些让人想不到的事。。。


精华推荐:


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马