您的位置:首页 > 移动开发 > IOS开发

IOS第16天(2,Quartz2D下载进度条)

2015-09-01 17:05 423 查看
*************自定义下载的view的方法

#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 drawRect:self.bounds];
// 重新绘制
// 在view上做一个重绘的标记,当下次屏幕刷新的时候,就会调用drawRect.
[self setNeedsDisplay];
}

// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
// 当视图显示的时候会调用 默认只会调用一次
- (void)drawRect:(CGRect)rect
{
// Drawing code

// 1.获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();

// 2.拼接路径
CGPoint center = CGPointMake(50, 50);
CGFloat radius = 50 - 2;
CGFloat startA = -M_PI_2;
CGFloat endA = -M_PI_2 + _progress * M_PI * 2;
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];

// 3.把路径添加到上下文
CGContextAddPath(ctx, path.CGPath);

// 4.把上下文渲染到视图
CGContextStrokePath(ctx);

}

@end


*******监听

#import "HMViewController.h"

#import "HMProgressView.h"

@interface HMViewController ()
@property (weak, nonatomic) IBOutlet HMProgressView *progressView; //自定义的view

@end

@implementation HMViewController
- (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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: