IOS自動布局,代碼獲取動態(tài)布局控件尺寸

在IOS開發(fā)過程中苞也,會經(jīng)常使用自動布局和代碼共同實現(xiàn)功能展示。自動布局會根據(jù)IOS設(shè)備類型粘秆,屏幕大小進行控件尺寸的動態(tài)調(diào)整來完成應(yīng)用的屏幕適配如迟,那么如何在代碼中獲取當前控件具體尺寸呢?

應(yīng)用場景:比如我們的應(yīng)用要求根據(jù)不同的業(yè)務(wù)場景翻擒,動態(tài)調(diào)整界面展示的內(nèi)容氓涣,導致在不同條件下需要在同一個UIView中加入不同類型的子View牛哺。那么如何保證子View可以根據(jù)父View尺寸來進行自動調(diào)整呢陋气?自然需要知道當前父View的尺寸,子View可以根據(jù)尺寸類設(shè)計引润,那么如何獲取父View的尺寸呢巩趁?何時獲取尺寸才合適?

UIViewController生命周期:

(void)loadView

(void)viewDidLoad

(void)viewWillAppear

(void)viewWillLayoutSubviews

(void)viewDidLayoutSubviews

(void)viewDidAppear

(void)viewWillDisappear

(void)viewDidDisappear

其中l(wèi)oadView淳附、viewDidLoad议慰、viewWillAppear、viewDidAppear奴曙、viewWillDisappear别凹、viewDidDisappear,不需要在此敘述洽糟,他們的執(zhí)行順序和完成的內(nèi)容可以參考UIViewController生命周期的各類文章炉菲,在此主要討論的是其中另外兩個常常被忽視的方法:viewWillLayoutSubviews、viewDidLayoutSubviews坤溃。

在介紹這兩個方法之前拍霜,需要了解的是UIView中的layoutSubViews方法,這個方法是在UIView發(fā)生變化時(包括子view發(fā)生變化薪介,自身尺寸調(diào)整等)祠饺,重新調(diào)整子View的方法。對的汁政,就是這個方法道偷,這個方法會適應(yīng)UIView的調(diào)整缀旁,我們可以在需要的時候?qū)ζ鋬?nèi)部的子View進行尺寸屬性等的修改來滿足新場景的需求。

同理试疙,在UIViewController中诵棵,viewWillLayoutSubviews和viewDidLayoutSubviews是加載控制器子View時相關(guān)兩個方法,類似viewWillAppear和viewDidAppear祝旷,viewWillLayoutSubviews是在加載子View之此前調(diào)用履澳,viewDidLayoutSubviews是加載子View完畢后調(diào)用。也就是說怀跛,當控制器執(zhí)行到viewDidLayoutSubviews時距贷,所有的內(nèi)部控件都已經(jīng)加載完畢,意味著尺寸大小已經(jīng)確定吻谋,此時的尺寸就是未來在屏幕中加載出來的View的尺寸忠蝗,這就是我們想要的。

所以漓拾,在IOS開發(fā)中我們應(yīng)該注意以下幾個幾點:1阁最、不要把所有的初始化操作都安排在viewDidLoad中,應(yīng)該根據(jù)具體的要求選擇合適的加載時機骇两;2速种、為布局做準備的操作可以在viewWillLayoutSubviews之前做,如決定子view的加載類型可以在viewDidLoad中進行判斷低千,而在總體布局基礎(chǔ)上上進行調(diào)整時需要在viewDidLayoutSubviews中操作(自動布局)配阵;3、不要在viewDidLoad等方法中進行耗時操作示血,會影影響界面的加載效率棋傍;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市难审,隨后出現(xiàn)的幾起案子瘫拣,更是在濱河造成了極大的恐慌,老刑警劉巖告喊,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件麸拄,死亡現(xiàn)場離奇詭異,居然都是意外死亡葱绒,警方通過查閱死者的電腦和手機感帅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來地淀,“玉大人失球,你說我怎么就攤上這事。” “怎么了实苞?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵豺撑,是天一觀的道長。 經(jīng)常有香客問我黔牵,道長聪轿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任猾浦,我火速辦了婚禮陆错,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘金赦。我一直安慰自己音瓷,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布夹抗。 她就那樣靜靜地躺著绳慎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪漠烧。 梳的紋絲不亂的頭發(fā)上杏愤,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音已脓,去河邊找鬼珊楼。 笑死,一個胖子當著我的面吹牛摆舟,可吹牛的內(nèi)容都是我干的亥曹。 我是一名探鬼主播邓了,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼恨诱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了骗炉?” 一聲冷哼從身側(cè)響起照宝,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎句葵,沒想到半個月后厕鹃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡乍丈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年剂碴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轻专。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡忆矛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情催训,我是刑警寧澤洽议,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站漫拭,受9級特大地震影響亚兄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜采驻,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一审胚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧礼旅,春花似錦菲盾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至碎浇,卻和暖如春临谱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奴璃。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工悉默, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苟穆。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓抄课,卻偏偏與公主長得像,于是被迫代替她去往敵國和親雳旅。 傳聞我的和親對象是個殘疾皇子跟磨,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容