//
|
// GradientProgressView.m
|
// screendisplay
|
//
|
// Created by 单军华 on 2018/7/10.
|
// Copyright © 2018年 单军华. All rights reserved.
|
//
|
|
#import "GradientProgressView.h"
|
|
@interface GradientProgressView (){
|
UIColor *_bgProgressColor;
|
NSArray *_colorArr;
|
CGFloat _progress;
|
}
|
|
@property (nonatomic, strong) CALayer *bgLayer;
|
@property (nonatomic, strong) CAGradientLayer *gradientLayer;
|
|
@end
|
|
@implementation GradientProgressView
|
|
- (void)setProgress:(CGFloat)progress {
|
if (progress < 0) {
|
_progress = 0;
|
}
|
if (progress > 1) {
|
_progress = 1;
|
}
|
_progress = progress;
|
[self updateProgressView];
|
}
|
|
- (void)setColorArr:(NSArray *)colorArr {
|
if (colorArr.count >= 2) {
|
_colorArr = colorArr;
|
}else {
|
NSLog(@">>>>>颜色数组个数小于2,显示默认颜色");
|
}
|
}
|
|
- (void)updateProgressView {
|
self.gradientLayer.bounds = CGRectMake(0, 0, self.frame.size.width * self.progress, self.frame.size.height);
|
self.gradientLayer.colors = self.colorArr;
|
}
|
|
#pragma mark - init
|
|
/*从Xib创建对象时调用*/
|
- (instancetype)initWithCoder:(NSCoder *)aDecoder{
|
|
self = [super initWithCoder:aDecoder];
|
if(self) {
|
[self commonInit];
|
}
|
return self;
|
}
|
|
/*从代码创建对象时调用*/
|
- (instancetype)initWithFrame:(CGRect)frame{
|
|
self = [super initWithFrame:frame];
|
if(self) {
|
[self commonInit];
|
}
|
return self;
|
}
|
|
- (void)commonInit{
|
_colorArr = @[(id)HexColor(0xFDDF76).CGColor, (id)HexColor(0xFEBC19).CGColor];
|
_progress = 0.65;
|
_bgProgressColor = HexColor(0xf2f2f2);
|
}
|
|
-(void)drawRect:(CGRect)rect{
|
|
if (!_bgLayer) {
|
_bgLayer = [CALayer layer];
|
//一般不用frame,因为不支持隐式动画
|
_bgLayer.bounds = CGRectMake(0, 0, rect.size.width, rect.size.height);
|
_bgLayer.anchorPoint = CGPointMake(0, 0);
|
_bgLayer.backgroundColor = self.bgProgressColor.CGColor;
|
// _bgLayer.cornerRadius = rect.size.height / 2.;
|
[self.layer addSublayer:_bgLayer];
|
}
|
if (!_gradientLayer) {
|
_gradientLayer = [CAGradientLayer layer];
|
_gradientLayer.bounds = CGRectMake(0, 0, rect.size.width * self.progress, rect.size.height);
|
_gradientLayer.startPoint = CGPointMake(0, 0);
|
_gradientLayer.endPoint = CGPointMake(1, 0);
|
_gradientLayer.anchorPoint = CGPointMake(0, 0);
|
NSArray *colorArr = self.colorArr;
|
_gradientLayer.colors = colorArr;
|
|
//_gradientLayer.cornerRadius = rect.size.height / 2.;
|
[self.layer addSublayer:_gradientLayer];
|
}
|
//self.layer.cornerRadius = rect.size.height / 2.;
|
self.clipsToBounds = YES;
|
}
|
|
@end
|