Quartz2D绘制下载进度

ViewController.h 文件

#import "ViewController.h"
#import "ProgressView.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *labelView;
@property (weak, nonatomic) IBOutlet UISlider *slider;
@property (weak, nonatomic) IBOutlet ProgressView *progressView;

@end

@implementation ViewController

- (IBAction)sliderAction:(UISlider *)sender {
    
  //设置label上的文字内容
    _labelView.text = [NSString stringWithFormat:@"%.2f%%",sender.value*100];
    //传值
    _progressView.progress = sender.value;
    
}

ProgressView.h 文件

#import <UIKit/UIKit.h>

@interface ProgressView : UIView
  //提供一个接受滑动条value值的属性
@property(nonatomic,assign)CGFloat progress;

@end

ProgressView.m 文件

#import "ProgressView.h"

@implementation ProgressView

- (void)drawRect:(CGRect)rect {
   
    //设置半径
    CGFloat radius = rect.size.width*0.5;
     //圆心
    CGPoint center = CGPointMake(radius, radius);
    //终点
    CGFloat endA = - M_PI_2 +_progress*M_PI*2;
    //伊瑟尔路径绘图
    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius-3 startAngle:-M_PI_2 endAngle:endA clockwise:YES];
    //渲染
    [path stroke];
    
}

//复写set方法,作用:一旦progress的值改变,就重绘
-(void)setProgress:(CGFloat)progress{
    
    _progress = progress;
    
    //重绘,系统会先创建与view相关联的上下文,然后再调用drawrect
    [self setNeedsDisplay];
    
    
//注意:drawRect不能手动调用,因为图形上下文我们自己创建不了,只能由系统帮我们创建,并且传递给我们
}

@end

storyboard中的布局

运行截图(拖动滚动条,进行画圆)

效果图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,657评论 4 61
  • 01 何为归宿? 我们都曾去需求一个寄托点,每个寄托点都是自己的归宿,会拥有归宿感。那种可以迎难而上,那种又...
    efa5bdf591c9阅读 2,662评论 0 1
  • 从喜欢你的那一刻起到现在,不过一年零两个月。陈老师放《唐之韵》给我们看,我便开始喜欢上你了,莫名地喜欢,不知道为什...
    示子小姐阅读 3,490评论 17 8
  • 【摘要】理科僧后来当了一个四年基本不动笔的文科僧并读了研,还吃了码字这碗饭。闲来无事的时候,很少去写什么东西。当拿...
    红薯摊儿阅读 1,950评论 1 0
  • 无边的湖,窒息的雾 来一阵风,吹散那雾,吹皱那湖 无边的湖,窒息的雾 化一阵风,吹散那雾,吹皱那湖
    飞羽城主阅读 2,350评论 0 4

友情链接更多精彩内容