zoukankan      html  css  js  c++  java
  • 用 CALayer 定制下载进度条控件

    //
    //  RPProgressView.h
    //  CALayer定制下载进度条控件
    //
    //  Created by RinpeChen on 16/1/2.
    //  Copyright © 2016年 rinpe. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface RPProgressView : UIView
    @property (nonatomic, assign) CGFloat progressValue;    // 进度值:0 ~ 1.0
    @property (nonatomic, strong) UIColor *progressColor;   // 进度条颜色
    @end
    //
    //  RPProgressView.m
    //  CALayer定制下载进度条控件
    //
    //  Created by RinpeChen on 16/1/2.
    //  Copyright © 2016年 rinpe. All rights reserved.
    //
    
    #import "RPProgressView.h"
    
    @interface RPProgressView ()
    
    @property (nonatomic, strong) CALayer *progressLayer;
    
    @end
    
    @implementation RPProgressView
    
    - (instancetype)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            // 初始化layer
            self.progressLayer = [CALayer layer];
            self.progressLayer.backgroundColor = [UIColor redColor].CGColor;
            self.progressLayer.frame = CGRectMake(0, 0, 0, frame.size.height);
            
            // 添加子layer
            [self.layer addSublayer:self.progressLayer];
        }
        return self;
    }
    
    - (void)setFrame:(CGRect)frame
    {
        [super setFrame:frame];
        self.progressLayer.frame = CGRectMake(0, 0, 0, frame.size.height);
    }
    
    // 设置进度值
    - (void)setProgressValue:(CGFloat)progressValue
    {
        _progressValue = progressValue;
        
        if (progressValue <= 0) {
            self.progressLayer.frame = CGRectMake(0, 0, 0, self.frame.size.height);
        } else if (progressValue <= 1) {
            self.progressLayer.frame = CGRectMake(0, 0, self.frame.size.width * progressValue, self.frame.size.height);
        } else {
            self.progressLayer.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
        }
    }
    
    // 设置进度条颜色
    - (void)setProgressColor:(UIColor *)progressColor
    {
        _progressColor = progressColor;
        
        self.progressLayer.backgroundColor = progressColor.CGColor;
    }
    
    @end

    demo:https://github.com/RinpeChen/progressViewDemoByRinpe.git

  • 相关阅读:
    51. spring boot属性文件之多环境配置【从零开始学Spring Boot】
    html的基本结构
    html的介绍
    SimpleDateFormat
    线程池
    写XML
    在解析XML时要注意解析元素和解析标签属性的区别
    9月2日笔记
    eclipse快捷提示原理
    form表单提交信息的方式
  • 原文地址:https://www.cnblogs.com/Rinpe/p/5094358.html
Copyright © 2011-2022 走看看