#import "ProgressView.h"
@implementation ProgressView
/*
drawRect: 不能手动调用,因为图形上下文我们自己创建不了,只能系统帮我们创建并传递给我们
*/
- (void)drawRect:(CGRect)rect
{
CGFloat radius = rect.size.width * 0.5;
CGPoint center = CGPointMake(radius, radius);
CGFloat endAngle = -M_PI_2 + self.progressValue * M_PI * 2;
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius-5 startAngle:-M_PI_2 endAngle:endAngle clockwise:YES];
path.lineWidth = 3;
[[UIColor orangeColor] set];
[path stroke];
}
- (void)setProgressValue:(CGFloat)progressValue
{
_progressValue = progressValue;
// 刷新界面
// 系统会先创建与view相关联的上下文,然后调用drawRect:方法
[self setNeedsDisplay];
}
@end
//
// ViewController.m
#import "ViewController.h"
#import "ProgressView.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *labelView;
@property (weak, nonatomic) IBOutlet ProgressView *progressView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)progressValueChnage:(UISlider *)sender
{
self.labelView.text = [NSString stringWithFormat:@"%.2f%%",sender.value * 100];
// 给progressView传值
self.progressView.progressValue = sender.value;
}
@end
效果: