From 3e8437ae559487362fae3525beb79c534c213a51 Mon Sep 17 00:00:00 2001 From: 单军华 Date: Thu, 12 Jul 2018 13:44:34 +0800 Subject: [PATCH] bug修复和功能优化 --- screendisplay/screendisplay/Classes/Category/ProgressView/GradientProgressView.m | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 103 insertions(+), 0 deletions(-) diff --git a/screendisplay/screendisplay/Classes/Category/ProgressView/GradientProgressView.m b/screendisplay/screendisplay/Classes/Category/ProgressView/GradientProgressView.m new file mode 100644 index 0000000..c48bd9d --- /dev/null +++ b/screendisplay/screendisplay/Classes/Category/ProgressView/GradientProgressView.m @@ -0,0 +1,103 @@ +// +// 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 -- Gitblit v1.8.0