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

  • 相关阅读:
    clearstatcache清除文件状态缓存
    使用mysql创建自己的物化视图
    python——复制目录结构小脚本
    开发一个jQuery插件——多级联动菜单
    pack、unpack自制二进制“数据库”
    博客爬取系统
    session放入缓存(redis)、DB
    centos+nginx从零开始配置负载均衡
    几个容易被忽略的mysql知识
    数组方式进行表单提交
  • 原文地址:https://www.cnblogs.com/Rinpe/p/5094358.html
Copyright © 2011-2022 走看看