亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

什么時候調用布局子視圖?

什么時候調用布局子視圖?

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

3 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

在@BadPirate之前的回答的基礎上,我做了進一步的實驗,并提出了一些澄清/更正。我發現layoutSubviews:只有在下列情況下,才會在視圖上調用:

  • 它自己的

    (不是框架)改變了。
  • 它的一個直接子視圖的界限發生了變化。
  • 子視圖將添加到視圖中或從視圖中刪除。

一些相關細節:

  • 只有在新值不同的情況下,才會認為邊界是更改的,

    包括一個不同的起源

    ..請特別注意,這就是為什么

    layoutSubviews:

    每當UIScrollView滾動時調用,因為它通過更改邊界的來源來執行滾動。
  • 更改框架只會在大小更改時更改邊界,因為這是傳播到邊界屬性的唯一內容。
  • 視圖層次結構中尚未出現的視圖邊界上的更改將導致調用

    layoutSubviews: 當視圖最終被添加到視圖層次結構時.

  • 為了完整起見:這些觸發器不會

    直接

    調用layoutSubview,而是調用

    setNeedsLayout

    ,它設置/升起一個旗子。對于所有視圖,運行循環的每一次迭代

    在視圖層次結構中

    ,這個標志被選中。對于每個發現升起國旗的視圖,

    layoutSubviews:

    被調用并重置標志。將首先檢查/調用層次結構上較高的視圖。



查看完整回答
反對 回復 2019-11-08
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

我跟蹤解決方案的原因是InterfaceBuilder堅持不能在打開模擬屏幕元素(狀態欄等)的視圖上更改Spring。由于彈簧為主視圖關閉,該視圖無法更改大小,因此,當調用欄出現時,整個視圖都會向下滾動。

關閉模擬的功能,然后調整視圖大小和正確設置彈簧會導致動畫發生,并調用我的方法。

調試中的另一個問題是,當調用狀態通過菜單切換時,模擬器退出應用程序。退出app=沒有調試器。



查看完整回答
反對 回復 2019-11-08
  • 3 回答
  • 0 關注
  • 395 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號