效果图
先在storyboard上拖入一个view,一个label,一个滑块
新添加一个UIView - ProgressView, 在.h文件中写入属性
//滑块的进度
@property(nonatomic,assign)CGFloat progress;
在.m文件中
//set方法,重新赋值
-(void)setProgress:(CGFloat)progress
{
_progress = progress;
//系统会先创建与view相关联的上下文,然后再调用drawRect
[self setNeedsDisplay];
}
//注意:drawRect不能手动调用,因为图形上下文我们自己创建不了,只能由系统帮我们创建,并且传递给我们
- (void)drawRect:(CGRect)rect {
//创建贝瑟尔路径
CGFloat radius = rect.size.width * 0.5;
CGPoint center = CGPointMake(radius, radius);
CGFloat endA = -M_PI_2 + self.progress * M_PI * 2;
UIBezierPath * path = [UIBezierPath bezierPathWithArcCenter:center radius:radius-5 startAngle:-M_PI_2 endAngle:endA clockwise:YES];
[path stroke];
}
ViewController.m中
#import "ViewController.h"
#import "ProgressView.h"
@interface ViewController ()
//拖进去的label
@property (weak, nonatomic) IBOutlet UILabel *progressLabel;
@property (weak, nonatomic) IBOutlet ProgressView *proView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
//滑块变动的方法
- (IBAction)progressChange:(UISlider *)sender {
self.progressLabel.text = [NSString stringWithFormat:@"%.2f%%",sender.value * 100];
self.proView.progress = sender.value;
}
@end