什么時候調(diào)用布局子視圖?我有一個定制的視圖layoutSubview動畫期間的消息。我有一個充滿屏幕的視圖。它在屏幕底部有一個自定義子視圖,如果我更改導航條的高度,它將在InterfaceBuilder中正確調(diào)整大小。layoutSubviews在創(chuàng)建視圖時調(diào)用,但不會再次調(diào)用。我的子視圖布局正確。如果我關(guān)閉調(diào)用狀態(tài)欄,則子視圖的layoutSubviews則根本不調(diào)用,即使主視圖確實對其大小進行了動畫化。在什么情況下layoutSubviews真的打電話了?我有過autoresizesSubviews設為NO我的定制視圖。在InterfaceBuilder中,我有頂部和底部的支柱和垂直箭頭集。這個難題的另一個部分是,必須將窗口設置為鍵:[window makeKeyAndVisible];否則,子視圖不會自動調(diào)整大小。
3 回答

慕標琳琳
TA貢獻1830條經(jīng)驗 獲得超9個贊
layoutSubviews:
它自己的 界
(不是框架)改變了。 它的一個直接子視圖的界限發(fā)生了變化。 子視圖將添加到視圖中或從視圖中刪除。
只有在新值不同的情況下,才會認為邊界是更改的, 包括一個不同的起源
..請?zhí)貏e注意,這就是為什么 layoutSubviews:
每當UIScrollView滾動時調(diào)用,因為它通過更改邊界的來源來執(zhí)行滾動。 更改框架只會在大小更改時更改邊界,因為這是傳播到邊界屬性的唯一內(nèi)容。 視圖層次結(jié)構(gòu)中尚未出現(xiàn)的視圖邊界上的更改將導致調(diào)用 layoutSubviews:
當視圖最終被添加到視圖層次結(jié)構(gòu)時.為了完整起見:這些觸發(fā)器不會 直接
調(diào)用layoutSubview,而是調(diào)用 setNeedsLayout
,它設置/升起一個旗子。對于所有視圖,運行循環(huán)的每一次迭代 在視圖層次結(jié)構(gòu)中
,這個標志被選中。對于每個發(fā)現(xiàn)升起國旗的視圖, layoutSubviews:
被調(diào)用并重置標志。將首先檢查/調(diào)用層次結(jié)構(gòu)上較高的視圖。

ABOUTYOU
TA貢獻1812條經(jīng)驗 獲得超5個贊
添加回答
舉報
0/150
提交
取消