根据拖动的进度画圆

效果大致是这样


屏幕快照 2017-05-23 上午11.52.57.png

大致思路: 画圆还是得用到drawRect, 因为圆的路径需要实时根据当前拖动的进度而绘制, 所以需要在监听进度的方法里面绘制, 但是我们无法手动调用drawRect方法, 需要通过setNeedsDisplay来让系统帮我们调用drawRect方法,

首先还是先自定义一个view, 即模拟器那个灰色的view, 然后在其.h文件中声明一个CGFloat的变量progressValue, 接收外部传进来的当前进度条的百分数(0到1这个数字), 根据这个数字得出需要画出的圆的角度

- (void)drawRect:(CGRect)rect{

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGPoint center = CGPointMake(rect.size.width / 2, rect.size.height / 2);
CGFloat radius = rect.size.width / 2 - 10;
CGFloat startA = -M_PI_2;//从12点方向开始
CGFloat angle = self.progressValue * M_PI * 2;
CGFloat endA = startA + angle;
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];
//3.把路径添加到上下文当中
CGContextAddPath(ctx, path.CGPath);
//4.把上下文的内容渲染到view的layer上
CGContextStrokePath(ctx);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,729评论 25 708
  • Quartz2D以及drawRect的重绘机制字数1487 阅读21 评论1 喜欢1一、什么是Quartz2D Q...
    PurpleWind阅读 938评论 0 3
  • 喜欢一个人也有一些时间 其实感觉到喜欢一个人也是享受的 不就是因为你有上进心才值得喜欢 可是喜欢不一定要在一起 你...
    细喵阅读 229评论 0 0
  • “我在发脾气的时候,别和我说道理,我不听,我不听。” 某热门剧集中有这么一段:一个全职太太刚刚得知丈夫出轨的事实,...
    布了了阅读 781评论 0 2
  • 那晚睡觉前,有个朋友突然在扣扣上问我什么是恋爱的感觉,我一时语塞,又怕对方等的太久,就随便说了下:“两个人满脑子都...
    箬禾阅读 1,024评论 0 0

友情链接更多精彩内容