Xcode5 xib設置autolayout方式:ios
列表1:框架
(選擇兩個view時可設置)測試
左邊對齊, spa
右邊對齊, debug
頂部對齊, code
底部對齊, 對象
x軸中心對齊, blog
y軸中心對齊, io
文本底標線對齊, 容器
(單選擇一個view時可設置)
對於父view的x軸中心對齊,
對於父view的y軸中心對齊,
(選擇框)
添加完約束後不進行任何操做,
在添加約束後從新擺放約束涉及到的view,
在添加約束後從新擺放全部這個容器內的view
肯定按鈕, 選擇完上面的項目後點擊添加約束
上面的十字是"與最近的鄰居的約束", 填上數字, 單擊虛線變成實線就是要添加這個約束.
這裏的"鄰居"是將一個包含子view的父view看作一個裝了一堆積木的盒子, 積木相對於盒子的邊框和其餘的積木都做爲"鄰居"
(定義的寬高數據約束)
寬度指定,
高度指定,
(定義多個view之間的寬高約束)
寬度相同,
高度相同,
(列表, 多個view之間的對齊約束, 等同於前一菜單的內容)
(列表, frame更新方式, 等同於前一菜單)
(肯定按鈕, 設置約束後點擊添加)
(上半部分菜單的操做對象是當前選中的view, 下半部分的操做對象是選中view內的view)
刷新frame(使用當前已經設置的全部約束),
刷新約束(根據當前的約束和frame, 更新約束的constant值),
添加缺失的約束(自動添加系統認爲你應該添加卻忘記添加的約束, 測試中常常搞出衝突)
重置爲系統建議的約束(清理系統認爲重複/衝突的約束, 測試中常常搞出問題)
清理全部約束(刪除對象上綁定的全部約束)
(在添加約束的時候, 刷新哪些視圖)
同級view和父view
子view
如今我常常碰到的就是, 好比一個控件, 它和它的父view之間使用的autolayout是用代碼指定的, 我能夠肯定constraint的形式, 可是在實現它的時候爲了方便使用了xib處理其內部的view, xib上拖放constraint因爲比較複雜而我還沒有明晰, 會在某些特定的狀況下出現constraint衝突, 系統自動處理衝突時會將權級較低的constraint放棄, 而因爲沒法明確每一條constraint應該處於什麼權級, 常常會出現偶發問題(如豎屏狀況下constraint之間沒有問題, 橫屏過來以後就發現某個控件內的某個label上不當心沒有刪除指定寬度的constraint, 致使變形的控件和控件內label的constraint衝突, 而後引起一系列的連鎖反應)
固然, 使用xib定義viewcontroller一樣要接觸到constraint, 並且每個都須要管理和指定(默認constraint常常會致使衝突)