波浪效果的實(shí)現(xiàn)

y = sin(x)


y = 10sin(x)


y = 10sin(0.03x)


y = 10sin(0.03x + 0.5)


y = 10sin(0.03x + 0.5) + 10


y = 10cos(0.03x + 0.5) + 10


雙層波 灰色cos 黑色sin

1.創(chuàng)建layer

_shapeLayer= [CAShapeLayer layer];

_shapeLayer.frame=CGRectMake(0,100,375,150);

[self.view.layeraddSublayer:_shapeLayer];

_shapeLayer2= [CAShapeLayer layer];

_shapeLayer2.frame = CGRectMake(0,100,375,150);

[self.view.layer addSublayer:_shapeLayer2];

2.創(chuàng)建定時(shí)器

_displayLink = [CADisplayLink displayLinkWithTarget:selfselector:@selector(drawPath)];

[_displayLink addToRunLoop:[NSRunLoopmainRunLoop] forMode:NSRunLoopCommonModes];

3.drawPath方法

static doublei =0;

CGFloat A =10.f;//A振幅

CGFloat k =0;//y軸偏移

CGFloat ω = 0.03;//角速度ω變大,則波形在X軸上收縮(波形變緊密);角速度ω變小,則波形在X軸上延展(波形變稀疏)。不等于0

CGFloat φ = 0 + i;//初相,x=0時(shí)的相位;反映在坐標(biāo)系上則為圖像的左右移動(dòng)。

//y=Asin(ωx+φ)+k

_path= [UIBezierPath bezierPath];

_path2= [UIBezierPath bezierPath];

[_path moveToPoint:CGPointZero];

[_path2 moveToPoint:CGPointZero];

for(int i =0; i < 376; i ++) {

CGFloat x = i;

CGFloat y = A *sin(ω*x+φ)+k;

CGFloat y2 = A *cos(ω*x+φ)+k;

[_path addLineToPoint:CGPointMake(x, y)];

[_path2 addLineToPoint:CGPointMake(x, y2)];

}

[_path addLineToPoint:CGPointMake(375, -100)];

[_path addLineToPoint:CGPointMake(0, -100)];

_path.lineWidth = 1;

_shapeLayer.path = _path.CGPath;

[_path2 addLineToPoint:CGPointMake(375, -100)];

[_path2 addLineToPoint:CGPointMake(0, -100)];

_path2.lineWidth = 1;

_shapeLayer2.path = _path2.CGPath;

i +=0.1;

if(i >M_PI*2) {

i =0;//防止i越界

}

4.效果圖

效果圖

玩一個(gè)有趣的效果,漸變色:


漸變色

demo已更新代碼,這里就不貼代碼了

demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容