如何實現百度外賣APP個人中心頭像"浪"起來的動畫效果

filweo 8年前發布 | 14K 次閱讀 iOS開發 移動開發

title: 如何實現百度外賣APP個人中心頭像"浪"起來的動畫效果

categories: iOS

{% cq %}

作為一個中午下班不肯離開工作崗位且勤奮工作的騷年來說,叫外賣就成了不可或缺的習慣.某日瞬間發現百度外賣的APP波浪效果很是吸引人.相比較其他的外賣APP,顏值略高些.(淘寶也有波浪的效果),遂就思考如何實現這種"浪"的效果.

{% endcq %}

<!--more-->

效果演示

百度外賣 波浪效果圖:

images

你需要知道的

CADisplayLink

簡單的說就是一定時器,其根本利用刷幀和屏幕頻率一樣來重繪渲染頁面.

其創建方式:

CADisplayLink *timer = [CADisplayLink displayLinkWithTarget:self selector:@selector(wave)];
[timer addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];

CAShapeLayer

CALayer的子類,通常結合CGPath來繪制圖形.

其創建方式:

CAShapeLayer *Layer = [CAShapeLayer layer];
Layer.frame =  self.bounds;
Layer.fillColor = self.realWaveColor.CGColor;
Layer...等屬性
[self.view.layer addSublayer:Layer];

其優點

  • 渲染效率高渲染快速。CAShapeLayer使用了硬件加速,繪制同一圖形會比用Core Graphics快很多。
  • 高效使用內存。一個CAShapeLayer不需要像普通CALayer一樣創建一個寄宿圖形,所以無論有多大,都不會占用太多的內存。
  • 不會被圖層邊界剪裁掉。一個CAShapeLayer可以在邊界之外繪制。你的圖層路徑不會像在使用Core Graphics的普通CALayer一樣被剪裁掉。
  • 不會出現像素化。當你給CAShapeLayer做3D變換時,它不像一個有寄宿圖的普通圖層一樣變得像素化。

三角函數

images

images

思路實現

UIView --> 2個CAShapeLayer --> imageView.frame.orgin.y調整

主要代碼實現

images

images

最后效果:

images

Demo地址

 

來自:http://www.jianshu.com/p/0e8fbbe0c127

 

 本文由用戶 filweo 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!