作為一個(gè)中午下班不肯離開工作崗位且勤奮工作的騷年來說,叫外賣就成了不可或缺的習(xí)慣.某日瞬間發(fā)現(xiàn)百度外賣的APP波浪效果很是吸引人.相比較其他的外賣APP,顏值略高些.(淘寶也有波浪的效果),遂就思考如何實(shí)現(xiàn)這種”浪”的效果.
效果演示
你需要知道的
CADisplayLink
簡單的說就是一定時(shí)器,其根本利用刷幀和屏幕頻率一樣來重繪渲染頁面.
其創(chuàng)建方式:
CADisplayLink *timer = [CADisplayLink displayLinkWithTarget:self selector:@selector(wave)];
[timer addToRunLoop:[NSRunLoop currentRunLoop] ?forMode:NSRunLoopCommonModes];
CAShapeLayer
CALayer的子類,通常結(jié)合CGPath來繪制圖形.
其創(chuàng)建方式:
CAShapeLayer *Layer = [CAShapeLayer layer];
Layer.frame =? self.bounds;
Layer.fillColor = self.realWaveColor.CGColor;
Layer...等屬性
[self.view.layer addSublayer:Layer];
其優(yōu)點(diǎn)
? 渲染效率高渲染快速毕箍。CAShapeLayer使用了硬件加速,繪制同一圖形會(huì)比用Core Graphics快很多道盏。
? 高效使用內(nèi)存而柑。一個(gè)CAShapeLayer不需要像普通CALayer一樣創(chuàng)建一個(gè)寄宿圖形文捶,所以無論有多大,都不會(huì)占用太多的內(nèi)存媒咳。
? 不會(huì)被圖層邊界剪裁掉粹排。一個(gè)CAShapeLayer可以在邊界之外繪制。你的圖層路徑不會(huì)像在使用Core Graphics的普通CALayer一樣被剪裁掉涩澡。
? 不會(huì)出現(xiàn)像素化顽耳。當(dāng)你給CAShapeLayer做3D變換時(shí),它不像一個(gè)有寄宿圖的普通圖層一樣變得像素化筏养。
三角函數(shù)
sinα = y/r ? cosα = x/r
思路實(shí)現(xiàn)
UIView –> 2個(gè)CAShapeLayer –> imageView.frame.orgin.y調(diào)整
主要代碼實(shí)現(xiàn)
屬性方法
實(shí)現(xiàn)
調(diào)用
終
最后效果:
來源:喬同X的博客