http://blog.csdn.net/asdfg13697116596/article/details/42562565佈局
iOS 8 AutoLayOut入門
自從iOS6帶來Auto Layout這個特性以來,用戶界面的佈局便變得簡單起來。iOS8更是作的更好
本文主要針對初學者分享一下本身最近學習AutoLayout的心得體會。Let’s Start!
首先,什麼是AutoLayout?
簡單來講,就是自動佈局,當你旋轉屏幕或者縮放你的UI來適應不一樣大小的屏幕等,程序的視圖看起來依然很nice,你經過能夠在IB中增長或者編輯約束(constraints)來實現。
啓用AutoLayout,能夠直接在Main.storyboard勾選AutoLayout
2.經過一個程序來認識Autolayout的一些操做和特性
首先在storyboard中拖入三個UIButton創建以下的方塊,豎屏下顯示
(注意:Xcode6中,若是直接拖入UIView不增長constraint,當你拖入下一個UIView會直接致使前一個的長寬都爲零,因此當拖入一個UIview必須設置爲reset to suggested constrains)
不作任何的改變,橫屏下
可是實際上,你想獲得的是下面的效果
3.怎麼作呢
選中兩個Button,按住⌘,而後在Editor 菜單中,選擇Pin\Widths Equally
學習
一樣地,選擇Editor\Pin\Horizontal Spacing..net
Tips:固然你也能夠經過選中一個Button而後按住control拖到另外一個Button,在菜單中選擇這些。code
接下來,對於這三個View分別應用:
左側: Top Space to Superview
Leading Space to Superview
右側: Top Space to Superview
Trailing Space to Superview
下部: Leading Space to Superview
Trailing Space to Superview
Bottom Space to Superview
此時,「T」型的constraint仍是橘黃色的,表示欠約束。
固然,從左側的Document Outline也能夠看到有一個紅色的箭頭,表示欠約束。
接下來選中三個View,添加Heights Equally。
此時,運行,ok搞定!
4.下面介紹幾個常見的問題:
有些時候,咱們運行程序會獲得提示Unable to simultaneously satisfy constraints,表示constraints衝突,也就是過約束。通常來講,一個試圖四個約束就夠了,多了確定得移去,不貴再多,恰到好處方好。
intrinsic content size(固有尺寸):
當咱們拖入一個Button的時候會發現,button的大小是肯定的。爲何呢?這是由於它能夠根據文字和背景自動計算它的大小,想要改變它的大小能夠經過移除Width constraint,再設置本身偏好的大小。若是想取消,只須要選擇Editor \Size to Fit Content.
Hugging priority (擁抱優先級)肯定view有多大的優先級阻止本身變大。
其實content Hugging就是要維持當前view在它的intrinsic content size,能夠想象成給view添加了一個額外的width constraint,此constraint試圖保持view的size不讓其變大。
Compression Resistance priority(壓縮阻抗優先級)肯定有多大的優先級阻止本身變小。
Content Compression Resistance就是要維持當前view在他的optimal size(intrinsic content size),能夠想象成給view添加了一個額外的width constraint,此constraint試圖保持view的size不讓其變小。
這兩個概念很抽象,本身在程序裏設置一下,運行幾回就清楚了!blog
此外還有其餘的一些屬性,須要本身去查看幫助文檔了。好了囉嗦這麼多,邏輯性也不強,很雜,歡迎你們批評指正。ip