自定义条形ProgressView

作者: MrBrave丶彬彬 | 来源:发表于2016-09-26 11:37 被阅读662次

    进度条在iOS开发中很常见的,我在项目开发中也写过好多进度条,有好多种类的,条形,圆形等,今天给大家总结一种条形的开发进度条。系统的进度条UIProgressView


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

    #######效果图

    1.gif

    #######部分代码

    
    -(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:可以自己增加 进度条文字等修改大小 样式

    别小看任何人,越不起眼的人。往往会做些让人想不到的事。。。
    2016年09月26日 未完待续。。。需要Demo留下邮箱。。后续传GitHub

    相关文章

      网友评论

        本文标题:自定义条形ProgressView

        本文链接:https://www.haomeiwen.com/subject/oahqyttx.html