黑马程序员技术交流社区

标题: 自定义条形ProgressView [打印本页]

作者: Simpon    时间: 2016-10-11 14:05
标题: 自定义条形ProgressView
本帖最后由 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{

if (self = [super initWithFrame:frame]) {


self.startNum =  startNum;

self.endNum = endNum;

self.signNum = signNum;


if(time == 0){

self.time  = 0.1;

}else{

self.time = time;

}


[self setUpSubViews];

}

return self;

}


- (void)setUpSubViews

{

UIView *backView = [[UIView alloc] init];

backView.backgroundColor =BoomViewColor;

backView.layer.cornerRadius = CornerRadius;

backView.layer.masksToBounds = YES;

[self addSubview:backView];

self.backView = backView;


UIView *fontView = [[UIView alloc] init];

fontView.backgroundColor = UpViewColor;

fontView.layer.cornerRadius = CornerRadius;

fontView.layer.masksToBounds = YES;

[self addSubview:fontView];

self.fontView = fontView;


}


-(void)progressViewStart{

if (self.timer == nil) {

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

self.timer = [NSTimer scheduledTimerWithTimeInterval:self.time target:self selector:@selector(changeProgressViewFrame:) userInfo:nil repeats:YES];

[[NSRunLoop mainRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];

});


}

}


-(void)changeProgressViewFrame:(NSTimer *)timer{


//位置计算

CGFloat signProgress = (self.signNum - self.startNum) / (self.endNum - self.startNum);

NSLog(@"==>>>%f",self.progress);

if (self.progress >= signProgress){

[self.timer invalidate];

self.timer = nil;

return;

}


self.progress += 0.01;

[self setNeedsLayout];


}


-(void)layoutSubviews{

[super layoutSubviews];

NSLog(@"==>>>%f",self.progress);

self.backView.frame = self.bounds;

self.fontView.frame = self.bounds;

self.fontView.width =  self.width * self.progress;


}


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


精华推荐:
黑马程序员:为苹果与iOS开发者的前景正名
与君共勉 --- 记黑马22期同学成长经验。
【持续更新】2016年最全最新的iOS视频+软件+源码+面试/技术
关于iOS 10最新的课程视频及demo第三弹,火速发布了







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2