New file |
| | |
| | | // |
| | | // TZProgressView.m |
| | | // TZImagePickerController |
| | | // |
| | | // Created by ttouch on 2016/12/6. |
| | | // Copyright © 2016年 谭真. All rights reserved. |
| | | // |
| | | |
| | | #import "TZProgressView.h" |
| | | |
| | | @interface TZProgressView () |
| | | @property (nonatomic, strong) CAShapeLayer *progressLayer; |
| | | @end |
| | | |
| | | @implementation TZProgressView |
| | | |
| | | - (instancetype)init { |
| | | self = [super init]; |
| | | if (self) { |
| | | self.backgroundColor = [UIColor clearColor]; |
| | | |
| | | _progressLayer = [CAShapeLayer layer]; |
| | | _progressLayer.fillColor = [[UIColor clearColor] CGColor]; |
| | | _progressLayer.strokeColor = [[UIColor whiteColor] CGColor]; |
| | | _progressLayer.opacity = 1; |
| | | _progressLayer.lineCap = kCALineCapRound; |
| | | _progressLayer.lineWidth = 5; |
| | | |
| | | [_progressLayer setShadowColor:[UIColor blackColor].CGColor]; |
| | | [_progressLayer setShadowOffset:CGSizeMake(1, 1)]; |
| | | [_progressLayer setShadowOpacity:0.5]; |
| | | [_progressLayer setShadowRadius:2]; |
| | | } |
| | | return self; |
| | | } |
| | | |
| | | - (void)drawRect:(CGRect)rect { |
| | | CGPoint center = CGPointMake(rect.size.width / 2, rect.size.height / 2); |
| | | CGFloat radius = rect.size.width / 2; |
| | | CGFloat startA = - M_PI_2; |
| | | CGFloat endA = - M_PI_2 + M_PI * 2 * _progress; |
| | | _progressLayer.frame = self.bounds; |
| | | UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES]; |
| | | _progressLayer.path =[path CGPath]; |
| | | |
| | | [_progressLayer removeFromSuperlayer]; |
| | | [self.layer addSublayer:_progressLayer]; |
| | | } |
| | | |
| | | - (void)setProgress:(double)progress { |
| | | _progress = progress; |
| | | [self setNeedsDisplay]; |
| | | } |
| | | |
| | | @end |