使用Autoresizing的幾種方式
a测蹲、通過storyboard中的故事板
b吁津、使用代碼
Autoresizing和Autolayout只能使用一個(gè)授艰,所以要想使用Autoresizing胶哲,需要將stroyboard中的 Use Auto Layout勾選框取消体啰。
Autoresizing是UIView的屬性稻扬,一直存在卦方,使用也比較簡(jiǎn)單,但是沒有autolayout那樣強(qiáng)大泰佳。如果你的界面比較簡(jiǎn)單盼砍,要求的細(xì)節(jié)沒有那么高,那么你完全可以使用autoresizing去進(jìn)行自動(dòng)布局逝她。
選中任意的控件浇坐,點(diǎn)擊它的尺寸檢測(cè)器,就可以看到Autoresizing了
外圍的四根線 -> 控制當(dāng)前控件與其父控件之間的間距
例如:設(shè)置一個(gè)控件到父控件的左邊的距離和上邊的距離固定
中間兩根線 -> 控制子控件是否隨父控件的寬or高變化而變化
如果勾選中間的水平方向這條線黔宛,則子控件的寬度會(huì)隨著父控件的寬度變化而變化.
如果勾選中間的垂直方向這條線近刘,則子控件的高度會(huì)隨著父控件的高度變化而變化.
例如:下圖中,紅色控件在藍(lán)色控件的內(nèi)部(藍(lán)色為夫臀晃,紅色為子)設(shè)置紅色控件與藍(lán)色控件的上觉渴、下、左徽惋、右的距離固定案淋,再設(shè)置紅色控件隨著藍(lán)色控件的寬度的變化而變化
點(diǎn)擊放大按鈕讓藍(lán)色控件的寬高變大,可以看到效果:
勾選垂直線的效果同理可得
使用Code設(shè)置Autoresizing
UIViewAutoresizing是一個(gè)枚舉類型险绘,默認(rèn)是UIViewAutoresizingNone踢京,也就是不做任何處理,當(dāng)然你可以根據(jù)自己的需要設(shè)置枚舉值宦棺,但是使用Code時(shí)要注意:??????代碼設(shè)置的方式要記住名字中出現(xiàn)的方位是可變的析苫,這一點(diǎn)和圖片設(shè)置的方式正好相反踪宠!
使用autoresizing建立約束
1鄙信、系統(tǒng)默認(rèn)狀態(tài)陵吸,也就是沒有約束
UIViewAutoresizingNone ? = ? 0,
2、本控件與其父控件左邊的間距是可變的,也就是說本控件與其父控件右邊是固定的
此處設(shè)置外部四個(gè)線正好與storyboard中相反
UIViewAutoresizingFlexibleLeftMargin? = 1 << 0,
3呐芥、當(dāng)前控件的寬度可變,對(duì)應(yīng)著storyboard中中間的水平線
UIViewAutoresizingFlexibleWidth? ? ? ? = 1 << 1,
4白华、本控件與其父控件右邊的間距是可變的,也就是說本控件與其父控件左邊是固定的
UIViewAutoresizingFlexibleRightMargin? = 1 << 2,
5、本控件與其父控件頂部的間距是可變的,也就是說本控件與其父控件底部是固定的
UIViewAutoresizingFlexibleTopMargin? ? = 1 << 3,
6贩耐、當(dāng)前控件的高度可變,對(duì)應(yīng)著storyboard中中間的垂直的線
UIViewAutoresizingFlexibleHeight? ? ? = 1 << 4,
7弧腥、本控件與其父控件底部的間距是可變的,也就是說本控件與其父控件頂部是固定的
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
在設(shè)置的時(shí)候注意:可以同時(shí)設(shè)置多個(gè)約束條件,中間使用連接符: "|" 分隔
例如:
使用Autoresizing的弊端
只能設(shè)置當(dāng)前控件和父控件之間的約束潮太,不能設(shè)置當(dāng)控件與兄弟控件之間的約束
例子:拖入兩個(gè)view并設(shè)置view寬度為130, 要求兩個(gè)View距離左右和頂部永遠(yuǎn)是20