iOS布局-autoresizingMask
Code&Ocean 2020-04-17 14:56:58? 2236? 收藏
分類專欄: # UI控件 文章標(biāo)簽: autoresizing iOS 布局
版權(quán)
UI控件
專欄收錄該內(nèi)容
30 篇文章0 訂閱
訂閱專欄
iOS布局-AutoresizingMask
前端的主要任務(wù)簡單來看项棠,就是繪制界面潮秘,綁定數(shù)據(jù)怎披。在iOS繪制界面的布局方式主要有以下三種:
frame
autoresizingMask
AutoLayout
fame:常用于絕對布局铐拐,通過設(shè)置x, y, width, height來確定控件的位置和大小。
autoresingMask:蘋果早期的相對布局的方案,允許子視圖跟隨父視圖變化而變化,比如按比例縮放寬高隘擎,按比例縮放邊距,僅限于兩個(gè)視圖之間使用凉夯,需要fame配合使用[不建議代碼使用货葬,可以在xib中使用]。
AutoLayout:iOS6引入基于關(guān)系的相對布局方式劲够,允許視圖與另外一個(gè)或者多個(gè)視圖保持約束關(guān)系震桶,可以在多個(gè)視圖間使用,但是建議參考父視圖添加約束征绎,系統(tǒng)可以自動(dòng)將frame轉(zhuǎn)為約束蹲姐。
Waring: 同一個(gè)視圖,不能同時(shí)使用autoresizingMask和AutoLayou,比如視圖A不能左邊關(guān)系使用autoresizingMask,高寬布局使用AutoLayout人柿。但是允許同一父視圖柴墩,不同子視圖使用autoresizingMask或者AutoLayout
AutoresizingMask理解
與frame絕對布局不同,autoresizingMask允許子視圖的大小和位置跟隨父視圖動(dòng)態(tài)變化,比如像UIButtion內(nèi)部哪些子控件就使用autoresizingMask來布局達(dá)到適應(yīng)效果顷扩。
借助xib我們可以形象理解autoresizingMask拐邪。
設(shè)置子視圖與父視圖寬高等比例變化效果圖如下:
設(shè)置等比例高度變化慰毅,底邊距等比例間距隘截,效果如下
通過上面的 gif 我們能輕松理解autoresizingMask的布局特點(diǎn)。就是可以設(shè)置等比例變化汹胃,達(dá)到視圖自適應(yīng)變化婶芭。
autoresizingMask支持 xib 和代碼。
UIViewAutoresizing枚舉值
在autoresizingMask中着饥,通過控制UIView的autoresizingMask屬性控制犀农,包含以下枚舉值:
布局關(guān)系 視圖隨父視圖等比例變化
none 默認(rèn)值,不會(huì)隨父視圖改變而改變
flexiableLeftMargin 子視圖左邊距宰掉,等比例變化
flexiableWidth 子視圖寬度呵哨,等比例變化
flexiableRightMargin 子視圖右邊距赁濒,等比例變化
flexiableTopMargin 子視圖上邊距,等比例變化
flexiableHeight 子視圖高度孟害,等比例變化
flexiableBottomMargin 子視圖底邊距離拒炎,等比例變化
Tips: flexiable表示靈活的、可自適應(yīng)的挨务、彈性的意思
實(shí)際設(shè)置往往需要組合這幾個(gè)枚舉值達(dá)到要求击你。
注意:在xib的Size Inspector的autoresizing中也可以設(shè)置對應(yīng)關(guān)系(而且很簡單),但是表達(dá)方式可能不一樣谎柄,對于邊距丁侄,在xib中選中表示不變的邊距 , 對于寬高朝巫,選中表示等比例變化的鸿摇。如下圖
代碼枚舉值卻是:[.flexibleTopMargin, .flexibleRightMargin]
xib/StroryBoard使用autoresizingMask
通過xib設(shè)置autoresizingMask很簡單,也很直觀劈猿,當(dāng)你選擇完后户辱,鼠標(biāo)放在上面就會(huì)有動(dòng)效,可以觀察到是不是自己想要的效果糙臼。
比如實(shí)現(xiàn)這個(gè)需求:label在不同尺寸的屏幕上庐镐,自適應(yīng)變化寬高,等比例設(shè)置左右邊距,但是頂部邊距不變变逃,達(dá)到不同設(shè)備相似視覺感必逆。
首先在storyboard中,以SE屏幕Controller為參考設(shè)置想要的frame揽乱,設(shè)置automask名眉,如下圖:
實(shí)際運(yùn)行顯示,根據(jù)不同屏幕凰棉,label的左右邊距等比例縮放损拢,且自適應(yīng)寬高。效果圖如下
代碼布局使用autoresizingMaskt
關(guān)于在代碼中使用autoresizingMask撒犀,我是百思不得其解福压,感覺設(shè)置了也沒有起到效果,感覺就像設(shè)置了還要自己算frame,不像在xib中設(shè)置了來得實(shí)際或舞。
參考:自動(dòng)布局值autoresizingMask使用詳情
不建議使用荆姆,感覺理解起來很復(fù)雜。
————————————————
版權(quán)聲明:本文為CSDN博主「Code&Ocean」的原創(chuàng)文章映凳,遵循CC 4.0 BY-SA版權(quán)協(xié)議胆筒,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_14920635/article/details/105580503