簡單彩虹動畫的效果實現

2021-07-06 05:11:07 字數 2231 閱讀 2296

簡單彩虹動畫的效果實現

我們先看下最後的效果圖

1、首先我們使用uibezierpath類畫乙個圓弧,使用方法

+ (instancetype)bezierpathwitharccenter:(cgpoint)center radius:(cgfloat)radius startangle:(cgfloat)startangle endangle:(cgfloat)endangle clockwise:(bool)clockwise;

center 圓弧的位置

radius 圓弧的弧度

startangle 開始的地方

endangle 結束的地方

2、使用cashapelayer類給圓弧乙個基礎層

_progresslayer = [cashapelayer layer];//建立

_progresslayer.frame = self

.bounds;//位置

_progresslayer.fillcolor = [[uicolor clearcolor] cgcolor];//填充顏色

_progresslayer.strokecolor=[uicolor redcolor].cgcolor;//弧形顏色

_progresslayer.linecap = kcalinecapround;

_progresslayer.linewidth = progress_line_width;

3、使用cagradientlayer類做乙個彩虹顏色漸變的效果填充到上面

cagradientlayer *gradient =  [cagradientlayer layer];//建立物件

gradient.frame = _progresslayer.frame;

[gradient setcolors:[nsarray arraywithobjects:(id)[[uicolor redcolor] cgcolor],(id)[[uicolor yellowcolor] cgcolor],(id)[[uicolor redcolor] cgcolor],(id)[[uicolor yellowcolor] cgcolor],(id)[[uicolor bluecolor] cgcolor],(id)[[uicolor redcolor] cgcolor], nil]];//設定顏色

[gradient setlocations:@[@0,@0.3,@0.5,@0.6,@0.8,@1]];//每種顏色最後的位置

[gradient setstartpoint:cgpointmake(0, 0)];//起始點

[gradient setendpoint:cgpointmake(1, 0)];//結束點

[gradient setmask:_progresslayer];//擷取圓弧

[self

.layer addsublayer:gradient];//新增

做到這裡就差不多完了。。。

再做乙個動畫的效果吧

4、動畫我使用的是cabasicanimation類

cabasicanimation *animation=[cabasicanimation animationwithkeypath:@"strokeend"];

animation.duration = 2

; animation.timingfunction=[camediatimingfunction functionwithname:kcamediatimingfunctioneaseineaseout];

animation.fromvalue=[nsnumber numberwithfloat:0.0f];

animation.tovalue=[nsnumber numberwithfloat:1.0f];

animation.autoreverses=no;

_progresslayer.path=path.cgpath

; [_progresslayer addanimation:animation forkey:@"strokeendanimation"];

這樣的話就達到了開始的的效果了,

寫得不好的地方希望大神指點。

ListView之簡單動畫效果實現

下面是布局檔案中乙個listview控制項 其中引用了乙個list layout animation檔案,下面我們在res anim 下面建立這樣乙個檔案,其內容如下 其中,android animation表示每個item出現時使用的動畫,它引用了item animation檔案,該檔案中具體描述...

前端動畫效果實現的簡單比較

合適的動畫不僅更能吸引人們的眼球,也能讓你的應用體驗更為流暢,而將動畫的效果做到極致,才能讓使用者感到使用你的應用是一種享受,而不是覺得生硬和枯燥。本文旨在 各種前端動畫效果實現方式的異同,具體應用中如何實現,以及實現的效果還得根據自身的情況進行考量。因為沒有其它可用的實現方式,最初的前端動畫都是j...

vue動畫過渡效果實現

1.首先在父路由中新增transition標籤 並給其新增動態的 name屬性 然後用transition標籤包裹router view標籤 然後在data中return出來動態 name 在style中寫 name enter,name enter to,name enter active的樣式 ...