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...