一、 Autolayout的對齊與等寬
1.對其
兩個控件都沒有描述清楚,以先創建的控件為準。
兩個控件有一個描述清楚,以描述清楚的控件為準。
2.等寬
兩個控件都沒有描述清楚,以控件的默認的為準。
兩個控件有一個描述清楚,以描述清楚的控件為主。
二、VFL(Visual Format Language)
1. 是什麼
是一個字符串,具有一定格式,代表一些約束含義。
2. 方法
constraintWithVisualFormat:option:metrics:view:
3.如何寫VFL字符串
| 代表父視圖的邊
H:| 代表左邊 水平
V:| 代表上邊 垂直
[]:代表一個子視圖(或控件)
():代表一個條件(==,>=,<=)==可以省略
- 代表間距
[button 1]-[textfiled]標準距離8
[button(>=50)]表示button的寬度
|-50-[button]-50-|距父視圖左邊50 右邊50
v:[topbutton]-20-[button]兩個按鈕的垂直距離
三、動畫(Animation)
1.是什麼
一般指的是"幀動畫",由一幀一幀的靜態的圖片快速切換達到動畫效果。幀代表的就是一張靜態圖片。
30FPS(幀率)Frame Per Second
人眼是無法分辨25幀以上的圖片,感覺上就是動畫。
連續畫圖片的方式叫渲染。(Rendering)
手機上一般也就是30幀,過快會導致費電。
2.IOS中的動畫
UIImage類 直接就支持動畫
NSTimer類 手工實現動畫
UIView類 類方法實現動畫(最常用)
Core Animation Framework 底層做動畫
IOS7增加:
UIKit Dynamic(動力)
Motion Effects(特效,不能算動畫)
Sprite Kit (2D引擎)
IOS8增加:
Sprite Kit (3D引擎)
Coscos2d(OC)/Coscos2dx(C++)跨平台
Metal
3.UIImage動畫
最基本動畫,使用UIImage對象快速切換圖片形成動畫效果。做小的動畫可以使用。
4.NSTimer手動動畫
4.1 是什麼
是一個定時器類,用於定時向對象發送消息。
4.2 如何使用
[NSTimer schedule]開頭的類方法創建NSTimer對象,對象創建後直接工作
4.3勻速動畫
勻速的改變視圖的一些值,就可以達到勻速動畫的效果。
center transform frame alpha
當前值 = 開始值 + 當前值的幀數*[(結束值 - 開始值)/(幀率*動畫時長)]
4.4變速動畫
常見情況:
由快到慢
由慢到快
由慢到快再到慢
由快到慢:
當前值 = 上一次值 + (目標值 - 上一次值)*漸變因子
Y = 500 + (100-500)*0.1 = 460 …40
Y = 460 + (100-460)*0.1 = 424 …36
Y = 424 + (100-424)*0.1 = 392 …32
5.UIView動畫
5.1 是什麼
是UIKit提供專門製作動畫的API,其實就是對CoreAnimation的封裝。
可以輕鬆的實現動畫,不需要經過計算。
5.2 製作動畫的步驟
(1)設置需要動畫的視圖的初始屬性值
(2)給UIView類發消息,告訴UIView類需要什麼樣的動畫。
(3)將動畫結束的狀態(屬性值)寫入到Block中
6.UIView高級動畫
參數1:動畫時長 參數2:延遲的時長
參數3:動畫特徵 參數4:動畫結束值
參數5:動畫結束後的處理
[UIView animateWithDuration:delay:option:animations:completion:]
option:動畫效果、特徵
CocoaLigature0 UIViewAnimationOptionRepeat重複
UIViewAnimationOptionCurveEaseInOut 先慢再快再慢 UIViewAnimationOptionCurveEaseIn 越來越快
UIViewAnimationOptionCurveEaseOut 越來越慢
UIViewAnimationOptionCurveLinear 勻速
UIViewAnimationOptionAutoreverse 反轉
可以同時支持多個動畫特效,但是要使用"|"符號進行連接。
注:動畫效果會與AutoLayout衝突。CocoaLigature1
老語法:
早期的動畫api
A.開始動畫 [UIView beginAnimations]
B.設置屬性值 [UIView setAnimations]
C.結束動畫 [UIView commitAnimations]