簡介:
在以前的ios程式中,是如何設定布局ui介面的?
經常編寫大量的座標計算**
為了保證在3.5 inch和4.0 inch螢幕上都能有完美的ui介面效果,有時還需要分別為2種螢幕編寫不同的座標計算**(即傳說中的「螢幕適配」)
什麼是autolayout?
autolayout是一種「自動布局」技術,專門用來布局ui介面的
autolayout自ios 6開始引入,由於xcode 4的不給力,當時並沒有得到很大推廣
自ios 7(xcode 5)開始,autolayout的開發效率得到很大的提公升
蘋果官方也推薦開發者盡量使用autolayout來布局ui介面
autolayout能很輕鬆地解決螢幕適配的問題
autoresizing
在autolayout之前,有autoresizing可以作螢幕適配,但侷限性較大,有些任務根本無法完成,只能決定子檢視和父檢視的螢幕適配。
相比之下,autolayout的功能比autoresizing強大很多
autolayout的2個核心概念:
參照、約束
autolayout的警告和錯誤:
警告控制項的frame不匹配所新增的約束, 比如
比如約束控制項的寬度為100, 而控制項現在的寬度是110
錯誤缺乏必要的約束, 比如
只約束了寬度和高度, 沒有約束具體的位置
兩個約束衝突, 比如
1個約束控制項的寬度為100, 1個約束控制項的寬度為110
**實現autolayout:
**實現autolayout的步驟
利用nslayoutconstraint類建立具體的約束物件
新增約束物件到相應的view上
- (void)addconstraint:(nslayoutconstraint *)constraint;
- (void)addconstraints:(nsarray *)constraints;
**實現autolayout的注意點
要先禁止autoresizing功能,設定view的下面屬性為no
view.translatesautoresizingmaskintoconstraints = no;
新增約束之前,一定要保證相關控制項都已經在各自的父控制項上
不用再給view設定frame
nslayoutconstraint:約束類
乙個nslayoutconstraint物件就代表乙個約束
建立約束物件的常用方法
+(id)constraintwithitem:(id)view1 attribute:(nslayoutattribute)attr1 relatedby:(nslayoutrelation)relation toitem:(id)view2 attribute:(nslayoutattribute)attr2 multiplier:(cgfloat)multiplier constant:(cgfloat)c;
view1 :要約束的控制項
attr1 :約束的型別(做怎樣的約束)
relation :與參照控制項之間的關係
view2 :參照的控制項
attr2 :約束的型別(做怎樣的約束)
multiplier :乘數
c :常量
自動布局有個核心公式
obj1.property1 =(obj2.property2 * multiplier)+ constant value
obj1、obj2:要約束的檢視控制項
property1、property2:約束的型別
multiplier:乘數,一般為1.0
constant value:常量
約束規則:
新增約束的規則(1)
在建立約束之後,需要將其新增到作用的view上
在新增時要注意目標view需要遵循以下規則:
1)對於兩個同層級
view之間的約束關係,新增到它們的父view上
新增約束的規則(2)
2)對於兩個不同層級view之間的約束關係,新增到他們最近的共同父view上
新增約束的規則(3)
3)對於有層次關係的兩個view之間的約束關係,新增到層次較高的父view上
程式猿神奇的手,每時每刻,這雙手都在改變著世界的互動方式!
分類:
ios高階
AutoLayout自動布局
autolayout 自動布局 入門 這是博主的wwdc2012筆記系列中的一篇,完整的筆記列表可以參看這裡。如果您是首次來到本站,也許您會有興趣通過rss,或者通過頁面左側的郵件訂閱的方式訂閱本站。autolayout是一種基於約束的,描述性的布局系統。auto layout is a const...
Autolayout自動布局3
不要將autoresizingmask轉為autolayout的約束 blueview.translatesautoresizingmaskintoconstraints no uiview redview uiview alloc init self.view addsubview redview...
iOS 自動布局Autolayout
自動布局 autolayout 簡介 在以前的ios程式中,是如何設定布局ui介面的?經常編寫大量的座標計算 為了保證在3.5 inch和4.0 inch螢幕上都能有完美的ui介面效果,有時還需要分別為2種螢幕編寫不同的座標計算 即傳說中的 螢幕適配 什麼是autolayout?autolayout...