// // HMProgressView.h // 进度条 // // Created by YaguangZhu on 15/9/9. // Copyright (c) 2015年 YaguangZhu. All rights reserved. // #import <UIKit/UIKit.h> @interface HMProgressView : UIView @property(nonatomic,assign)CGFloat progress; @end // // HMProgressView.m // 进度条 // // Created by YaguangZhu on 15/9/9. // Copyright (c) 2015年 YaguangZhu. All rights reserved. // #import "HMProgressView.h" @interface HMProgressView() @property(nonatomic,weak)UILabel *label; @end @implementation HMProgressView - (UILabel *)label { if (_label == nil) { UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; label.textAlignment = NSTextAlignmentCenter; [self addSubview:label]; _label = label; } return _label; } - (void)setProgress:(CGFloat)progress { _progress = progress; self.label.text = [NSString stringWithFormat:@"%.2f%%",progress*100]; [self setNeedsDisplay]; } // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code CGContextRef ctx = UIGraphicsGetCurrentContext(); CGPoint center = CGPointMake(50, 50); CGFloat startA = -M_PI_2; CGFloat radius = 50-2; CGFloat endA = -M_PI_2 +_progress * M_PI *2; UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES]; CGContextAddPath(ctx, path.CGPath); CGContextStrokePath(ctx); } @end
// // ViewController.h // 进度条 // // Created by YaguangZhu on 15/9/9. // Copyright (c) 2015年 YaguangZhu. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController @end // // ViewController.m // 进度条 // // Created by YaguangZhu on 15/9/9. // Copyright (c) 2015年 YaguangZhu. All rights reserved. // #import "ViewController.h" #import "HMProgressView.h" @interface ViewController () @property (weak, nonatomic) IBOutlet HMProgressView *progressView; @end @implementation ViewController - (IBAction)valueChange:(UISlider *)sender { _progressView.progress = sender.value; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
时间: 2024-10-09 16:18:54