93 lines
2.4 KiB
Objective-C
93 lines
2.4 KiB
Objective-C
//
|
|
// PKCircleView.m
|
|
// Download
|
|
//
|
|
// Created by Pavel on 30/05/15.
|
|
// Copyright (c) 2015 Katunin. All rights reserved.
|
|
//
|
|
|
|
#import "PKCircleView.h"
|
|
#import "UIColor+PKDownloadButton.h"
|
|
|
|
static const CGFloat kDefaultLineWidth = 1.f;
|
|
|
|
@interface PKCircleView ()
|
|
|
|
- (void)drawCircleRadius:(CGFloat)radius
|
|
rect:(CGRect)rect
|
|
startAngle:(CGFloat)startAngle
|
|
endAngle:(CGFloat)endAngel
|
|
lineWidth:(CGFloat)lineWidth;
|
|
|
|
@end
|
|
|
|
static PKCircleView *CommonInit(PKCircleView *self) {
|
|
if (self != nil) {
|
|
self.backgroundColor = [UIColor clearColor];
|
|
self.startAngleRadians = M_PI * 1.5;
|
|
self.endAngleRadians = self.startAngleRadians + (M_PI * 2);
|
|
self.lineWidth = kDefaultLineWidth;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
@implementation PKCircleView
|
|
|
|
#pragma mark - initialization
|
|
|
|
- (id)initWithCoder:(NSCoder *)decoder {
|
|
return CommonInit([super initWithCoder:decoder]);
|
|
}
|
|
|
|
- (instancetype)initWithFrame:(CGRect)frame {
|
|
return CommonInit([super initWithFrame:frame]);
|
|
}
|
|
|
|
#pragma mark - properties
|
|
|
|
- (void)setLineWidth:(CGFloat)lineWidth {
|
|
_lineWidth = lineWidth;
|
|
[self setNeedsDisplay];
|
|
}
|
|
|
|
- (void)setStartAngleRadians:(CGFloat)startAngleRadians {
|
|
_startAngleRadians = startAngleRadians;
|
|
[self setNeedsDisplay];
|
|
}
|
|
|
|
- (void)setEndAngleRadians:(CGFloat)endAngleRadians {
|
|
_endAngleRadians = endAngleRadians;
|
|
[self setNeedsDisplay];
|
|
}
|
|
|
|
#pragma mark - UIView
|
|
|
|
- (void)drawRect:(CGRect)rect {
|
|
[self drawCircleRadius:MIN(rect.size.width / 2, rect.size.height / 2) - self.lineWidth / 2.f
|
|
rect:rect
|
|
startAngle:self.startAngleRadians
|
|
endAngle:self.endAngleRadians
|
|
lineWidth:self.lineWidth];
|
|
}
|
|
|
|
#pragma mark - private methods
|
|
|
|
- (void)drawCircleRadius:(CGFloat)radius
|
|
rect:(CGRect)rect
|
|
startAngle:(CGFloat)startAngle
|
|
endAngle:(CGFloat)endAngel
|
|
lineWidth:(CGFloat)lineWidth {
|
|
UIBezierPath* bezierPath = [UIBezierPath bezierPath];
|
|
[self.tintColor setStroke];
|
|
[bezierPath addArcWithCenter:CGPointMake(rect.size.width / 2, rect.size.height / 2)
|
|
radius:radius
|
|
startAngle:startAngle
|
|
endAngle:endAngel
|
|
clockwise:YES];
|
|
|
|
bezierPath.lineWidth = lineWidth;
|
|
[bezierPath stroke];
|
|
}
|
|
|
|
@end
|