如何用CAShapeLayer实现圆环图片加载动画

  本文翻译自知名iOS教学网站www.raywenderlich.com,原文地址:点击阅读原文,原文是使用swift语言,翻译的时候转换至OC,翻译如有错漏,欢迎斧正.

  这是工程最初运行的样子,就只看到一张图片,如下:

  

  第一次运行的时候,会需要花费几秒钟下载图片,下载完毕后图片就会显示出来,没有任何的加载动画,加载动画就是我们本篇教学的目的.

我们需要通过以下两步来创建加载动画:

1.圆环进度条.首先需要绘制一个圆环,然后依据下载进度来更新圆环

2.圆形放大动画.通过圆形放大动画来展示下载好的图片.

  创建圆环进度条

  基本设计思路:进度条最初是无显示,然后随着图片下载进度逐渐显示,这也是通过CAShapeLayer来绘制圆形的例子.

  首先,声明一个实例和一个常量

@property (strong.noatomic) CAShapeLayer *circlePathLayer;
CGFloat circleRadius = 20;

circlePathLayer是绘制圆环的路径,circleRadius是表示圆角的值.

然后通过一个方法去设置circlePathLayer的初始值:

<span style="font-family:SimSun;">- (void) {
  circlePathLayer.frame = self.view.bounds;
  circlePathLayer.lineWidth = 2;
  circlePathLayer.fillColor = [UIColor.clearColor].CGColor;
  circlePathLayer.strokeColor = [UIColor.redColor].CGColor;
  [self.view.layer addSublayer:circlePathLayer];
</span><pre name="code" class="objc" style="line-height: 18px; font-size: 13px;"><span style="font-family:SimSun;">  circlePathLayer.backgroundColor = [UIColor.whiteColor];</span>
}

 

  添加路径

  通过以下方法添加路径到layer:

- (CGRect) circleFrame {
  CGRect circleFrame = CGRectMake(0, 0, 2*circleRadius, 2*circleRadius);
  circleFrame.origin.x = CGRectGetMidX(circlePathLayer.bounds) - CGRectGetMidX(circleFrame);
  circleFrame.origin.y = CGRectGetMidY(circlePathLayer.bounds) - CGRectGetMidY(circleFrame);
  return circleFrame;
}
  以上方法返回了一个CGRect,用以创建path.

  





































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值