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

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

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