Autolayout學習筆記

躍然發表於2014-12-21

知識點一:

1、佈局思維

傳統佈局思路中,一個view在哪裡有多大,那就寫清楚它的座標位置和寬高就定了,平時用CGRect和CGPoint這兩種模型就足夠了,而且它一定非常聽你的話,寫的是多少,它絕對就是多少;但是autolayout的思路卻變化了,或者說改進了,它囊括了傳統frame佈局思路,除了可以告訴view的座標和寬高,它更提供了一種相對的概念,比如:

1)view相對於螢幕檢視左邊5點,右邊10點,上面15點,下面20點,如果螢幕的長寬比例發生了改變(比如從3.5寸的320:480變成了4寸的320:568,或者從橫屏切換到了豎屏),view仍然會隨著螢幕的比例而拉伸改變,仍然保持離螢幕檢視左邊5點,右邊10點,上面15點,下面20點;

2)view1和view2之間相距10點,當螢幕尺寸發生改變或者旋轉時,他倆仍然可以通過改變自身的尺寸或位置改變來保證它們中間就是相距10點;

所以,使用autolayout的第一步是你需要考慮它相對於superView或者brotherView的上下左右的距離,改變自己佈局的思維。

2、使用autolayout存在的問題:

使用autolayout可能會經常得到自己不想看到的樣子,而且你改變frame也沒用。

知識點二、

AutoLayout可以完成所有原來Autoresizing Mask能完成的工作,同時還能夠勝任一些原來無法完成的任務,其中包括:

AutoLayout可以指定任意兩個view的相對位置,而不需要像Autoresizing Mask那樣需要兩個view在直系的view hierarchy中。

AutoLayout不必須指定相等關係的約束,它可以指定非相等約束(大於或者小於等);而Autoresizing Mask所能做的佈局只能是相等條件的。

AutoLayout可以指定約束的優先順序,計算frame時將優先按照滿足優先順序高的條件進行計算。

知識點三:

藍色的輔助線:表明Constraints已經足以說明這個view的位置了

ok Constraints
ok Constraints

橙色的輔助線:表示constraints沒有完備到可以說明這個view的位置

Constraints not ok
Constraints not ok

橙色的輔助線上的數字:有時是正數,有時是負數。當你設定或更改了Constraints的時候,可能Constraints與介面上你放置的view的位置是不同的。系統會以Constraints為準,介面上提示你橙色輔助線,線上的數字是這個view的位置與Constraints的差距。這時可以在“Resolve Auto Layout Issues”中選擇update frame,這樣這個view會自動移動到Constraints所指示的地方;也可以update constraints,這時view的位置不變,constraints變為與介面上的view位置一致的數值

對沒有提供Constraints的view,系統會自動加上constraints,這些constraints是介面上不可見的。這一點是Xcode5與Xcode4在Autolayout技術升級上最大的改進!Xcode4是系統強加constraints,往往會對開發者進行了干擾,因為強加的Constraints往往不是你想要的。Xcode5的這個改進方便了開發者按照自己的意圖去設計和實施:首先不用去修改系統強加的constraints;其次有些view的位置你不需要增加Constraints,就可以不用理會。注:這種自動給View加Constraints的方式只適用於你一個Constraints都沒加的情況,如果你加了x方向的,y方向的也需要手動新增。

constraints buttons
constraints buttons


小結:友情連結及推薦

1.《開始iOS 7中自動佈局教程》

原文&&翻譯一:

http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1

http://www.cocoachina.com/industry/20131203/7462.html

原文&&翻譯二:

http://www.raywenderlich.com/50319/beginning-auto-layout-tutorial-in-ios-7-part-2

http://www.cnblogs.com/zer0Black/p/3977288.html

2.《Autolayout及VFL經驗分享》

這篇文章以較簡單的描述囊括了VFL使用方法和常用的autolayout技巧。足夠大家使用了。

3.《AutoLayout(自動佈局)入門》

這篇文章精簡的囊括了autolayout的程式碼操作方式。

4. iOS developer guide

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html

認真看完以上鍊接與推薦,相信你會對autolayout有個全新的認識,使用autolayout應該不是問題了。