動畫1 UIView動畫

2021-07-06 03:21:28 字數 3691 閱讀 5566

uiview動畫簡單易用,可以滿足普通的動畫需求

//寫法1

[uiview beginanimations:@"animationid" context:null];

/**動畫效果***/

[uiview commitanimations];

//寫法2

[uiview animatewithduration:1.0 animations:^];

兩種寫法功能相同,動畫效果**填寫動畫配置和需要改變的檢視屬性,第二種寫法的動畫配置以block內為準,比如: 當前已經設定了執行時間duration為1.0s,如果block裡面再次設定執行時間為2.0s,那麼實際的執行時間是2.0s

動畫配置

setanimationdelegate:(id)delegate

setanimationwillstartselector:(sel)selector

setanimationdidstopselector:(sel)selector

設定動畫**,監聽動畫的開始與結束

setanimationduration:(nstimeinterval)duration

動畫的單次執行時間,預設為0.2秒

setanimationdelay:(nstimeinterval)delay

延遲delay秒後執行動畫,預設為0秒

setanimationstartdate:(nsdate *)startdate

動畫開始執行的時間,預設為當前時間[nsdate date]

setanimationcurve:(uiviewanimationcurve)curve

動畫曲線,是乙個列舉型別

uiviewanimationcurveeaseinout // 開始和結束放緩

uiviewanimationcurveeasein // 開始放緩

uiviewanimationcurveeaseout // 結束放緩

uiviewanimationcurvelinear //線性勻速

setanimationrepeatcount:(float)repeatcount

動畫的重複次數,可以為浮點數

setanimationrepeatautoreverses:(bool)repeatautoreverses

單次動畫執行完畢是否自動回退,比如: 設定自動回退為yes,動畫執行時間為2秒,重複次數為1次,檢視屬性從x=0到x=100,實際效果為檢視用時2秒從x=0到x=100,然後用時2秒從x=100到x=0,最後瞬間跳到x=100,總耗時4秒

setanimationbeginsfromcurrentstate:(bool)fromcurrentstate

新動畫是否以當前檢視狀態為起始狀態

檢視屬性

frame

改變檢視的位置和大小

transform

改變檢視的位置、大小和旋轉角度

alpha

改變檢視的透明度

顏色等frame屬性

改變檢視位置

/**檢視沿x軸方向移動100,y軸方向移動150,用時2.5秒*/

cgrect orgframe = self.activeview.frame;

orgframe.origin.x += 100;

orgframe.origin.y += 150;

[uiview animatewithduration:2.5 animations:^];

改變檢視大小

/**檢視寬高各增大50,用時3秒,重複2次*/

cgrect orgframe = self.activeview.frame;

orgframe.size.width += 50;

orgframe.size.height += 50;

[uiview animatewithduration:3.0 animations:^];

transform屬性

改變檢視位置

//檢視在x軸方向移動100,y軸方向移動150,用時2.0秒,自動回退

[uiview animatewithduration:2.0 animations:^];

改變檢視大小

//檢視寬度放大3倍,高度放大2倍,用時3秒,動畫結束後恢復原來大小

[uiview animatewithduration:3.0 animations:^ completion:^(bool finished) ];

通過改變frame變換檢視大小,檢視會保持原點(origin)不動,通過transform改變檢視大小,檢視會保持錨點(anchorpoint)不動

改變檢視角度

//動畫可以巢狀,第乙個動畫用時2秒線性旋轉180°,第乙個動畫結束後,第二個動畫開始,用時2秒再次線性旋轉180°

[uiview animatewithduration:2 animations:^ completion:^(bool finished) ];

}];

相對於

cgaffinetransformmaketranslation

cgaffinetransformmakescale

cgaffinetransformmakerotation

下面的方法具有累加效果

cgaffinetransformtranslate

cgaffinetransformscale

cgaffinetransformrotate

alpha和color
//檢視用時2秒變為綠色,延遲2秒,然後用時1秒變為透明

[uiview animatewithduration:2 animations:^ completion:^(bool finished) completion:nil];

}];

移除動畫
[self.activeview

.layer removeallanimations]

強制終止動畫過程,檢視屬性直接跳轉到最終狀態

單純的練習,方法未必恰當,也沒有測試,表亂用

[動畫1-uiview動畫]

iOS動畫1 UIView動畫

ios動畫基礎是core animation核心動畫。core animation是ios平台上負責圖形渲染與動畫的基礎設施。由於核心動畫的實現比較複雜,蘋果提供了實現簡單動畫的介面 uiview動畫。uiview動畫封裝在uiview的category中,主要實現一些簡單和常用的動畫。uiview...

iOS 動畫 UIView動畫

viewcontroller.m ui 23 動畫 import viewcontroller.h inte ce viewcontroller property strong,nonatomic iboutlet uiview opeview1 property strong,nonatomic ...

動畫之UIView動畫

uiview有三種型別的動畫 它是對uiview的屬性進行動畫的一種方法,能進行動畫顯示的動畫包括 位置和大小 bounds frame center 背景與透明 backgroundcolor alpha 轉換 transform 它包括一種特殊很炫的動畫形式 彈簧動畫usingspringwit...