一、 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]