動畫程式設計1

2022-07-28 06:24:10 字數 3243 閱讀 5428

uiview動畫用到的一些屬性:

frame

bounds

center

transform

alpha

backgroundcolor

contentstretch

在用oc做uiview的frame修改時,會出現以下錯誤:

事例如下:

[uiview animatewithduration:0.3 animations:^];
原因是:self.view.frame是objective-c語法,是讀取view屬性的frame屬性,在objective-c中使用點來訪問屬性只是一種語法糖,所以self.view.frame這句話會被轉換成:[[self view] frame]。也就是說,實際上這是訊息傳遞。而frame屬性是乙個cgrect結構,所以frame.size.height是c語言的語法,就是訪問cgrect結構中的size欄位,同樣,height是cgsize結構的乙個字段。而objective-c只是對c語言的乙個擴充套件,所以,上面這句話會被轉成c語言的函式呼叫形式。

而在c語言裡,函式的返回值是乙個r-value,是不能直接給它賦值的(所謂的r-value,就是只能出現在等號的右邊,你可以理解成是乙個常量;而可以被賦值的是l-value,可以出現在等號的左邊,通常是變數)。因此,當你打算直接給函式的返回值賦值的時候,編譯器告訴你"這個表示式無法被賦值"。這就是這個錯誤的出現原因。所以,解決辦法就是,用乙個臨時變數儲存這個函式的返回值,修改這個臨時變數,然後再賦給frame:

[uiview animatewithduration:0.3 animations:^];
效果圖:

上面這個方法基本上實現了檢視的右移,也就是修改了view的frame時使用。

2.uiviewanimationoptions的使用

它可以配置三種型別:

1).動畫控制相關

layoutsubviews  提交動畫的時候布局子控制項,表示子控制項和父控制項一同動畫

allowuserinteraction  動畫時允許使用者交流

beginfromcurrentstate   從當前狀態開始動畫

repeat   動畫無限重複

autoreverse  執行動畫迴路,設定動畫無限重複

overrideinheritedduration   忽略外層動畫的巢狀時間

overrideinheritedcurve      忽略外層動畫的巢狀時間變化曲線

overrideinheritedcontent    通過改變屬性和重會實現動畫效果,如果key沒有提交動畫將使用快照

showhidetransitionviews    用顯隱的方式替代新增移除圖層的動畫效果 

overrideinheritedoptions    忽略巢狀繼承的選項

2).時間曲線相關

curveeasyin       curveeasyinout       curveeasyout           curvelinear

由快到慢               

3).轉場效果相關:比如:兩個controller的切換

transitionnone   無轉場

transitionflipfromleft  從左往右的翻轉

transitionflipfromright   從右往左的翻轉

transitioncurlup  上捲轉場

transitioncurldown  下卷轉場

transitioncrossdissolve  轉場交叉消失

transitionflipfromtop  轉場從上翻轉

transitionflipfrombutton   轉場從下翻轉

使用repeat和curvelinear實現:

[uiview animatewithduration:1.0 delay:0.0 options:uiviewanimationoptioncurvelinear | uiviewanimationoptionrepeat animations:^ completion:nil];
效果圖:

3.使用begincommitanimate來實現動畫

改變背景顏色:

//

1.宣告動畫開始並配置動畫屬性

[uiview beginanimations:@"

text

"context:nil];

[uiview setanimationduration:

1.0];

[uiview setanimationrepeatcount:8];

[uiview setanimationrepeatautoreverses:yes];

//2.操作檢視

self.myview.backgroundcolor =[uicolor bluecolor];

//3.提交動畫

[uiview commitanimations];

效果圖:

3.nest(內層巢狀動畫)

內層動畫預設繼承外層動畫的一些屬性(duration,curve等),因此,在設定內層動畫的時候,可以設定如下的屬性,使得內層動畫獨立運作

overrideinheritedcurve       overrideinheritedduration         overrideinheritedoperations

重寫繼承的時間曲線                重寫繼承的時間                           重寫繼承的屬性

[uiview animatewithduration:3.0 delay:0.0 options:uiviewanimationoptioncurvelinear animations:^ completion:nil];

} completion:nil];

效果圖:

動畫1 UIView動畫

uiview動畫簡單易用,可以滿足普通的動畫需求 寫法1 uiview beginanimations animationid context null 動畫效果 uiview commitanimations 寫法2 uiview animatewithduration 1.0 animation...

android 動畫1 動畫補間動畫和幀動畫

透明方式 方式 animation alphaanimation new alphaanimation 0.0f,1.0f 載入 動畫資源檔案 animation animation animationutils.loadanimation this,r.anim.alpha anim imagev...

iOS動畫1 UIView動畫

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