當使用故事板,爲什麼viewWillAppear
不畫我的子視圖和viewDidLayoutSubviews
沒有更重要的是,從子視圖的子視圖訪問frame.size
值I必須致電[self.scroller layoutIfNeeded]
裏面的viewDidLayoutSubviews
?我有興趣瞭解視圖控制器的頁面生命週期以及從xib到故事板的變化。當使用故事板,爲什麼viewWillAppear中不畫我的子視圖和viewDidLayoutSubviews確實
2
A
回答
2
故事板實際上是實現爲廈門國際銀行文件的收集,有關過渡(塞格斯)它們之間的附加信息。所以如果我們只是談論一個單一的視圖控制器,視圖控制器的生命週期不應該有根本的不同。
如果不理解視圖控制器及其視圖層次結構如何設置,回答您的具體問題非常困難。這聽起來像您在滾動視圖中有一個視圖,並且您想知道何時可以訪問其屬性frame
。
UIKit的步驟如下(大約):
- 它加載在故事板/ XIB文件中描述的所有視圖,並根據需要連接所有的操作和出口。在此步驟後調用
viewDidLoad
。 - 它調用
viewWillAppear:
來指示它即將顯示視圖。 - 它將視圖添加到窗口中,調整大小以適應窗口大小。尺寸大小向下傳播到視圖層次結構中,因此每個視圖都佈置其子視圖(如果它被配置爲自動調整子視圖)。這些更改發生在動畫塊內部,因此一旦設置好了所有內容,用戶就會看到新的視圖。
- 動畫完成後,調用
viewDidAppear:
。
如果視圖有autoresizesSubviews
設置爲NO
,您可能會看到一些奇怪的現象;這可能是爲什麼你必須撥打layoutIfNeeded
self.scroller
。請注意,layoutIfNeeded
的文件說:
當收到此消息時,該層的超層遍歷直到祖先層發現,不需要佈局。然後,在該祖先下面的整個圖層樹上執行佈局。
因此,它可能會觸發其他無關視圖的佈局。
相關問題
- 1. 爲什麼我的故事板中的視圖不顯示(Swift)?
- 2. 爲什麼我的視圖類不顯示在故事板中?
- 3. 使用故事板作爲子視圖?
- 4. MKMapView和viewDidLoad/viewWillAppear/viewDidAppear使用故事板
- 5. 當我使用故事板時,爲什麼這些動畫不起作用?
- 6. 爲什麼我的故事板視圖不是iPhone形狀的?
- 7. 爲什麼我不能使用在故事板中單擊
- 8. IBAction爲子視圖與故事板
- 9. 爲什麼我的故事板不斷調整我的視圖尺寸
- 10. 爲什麼我不能在故事板中連接我的IBOutlets?
- 11. 故事板禁用我的視圖
- 12. UIView的子類不繪製故事板中的子視圖
- 13. 故事板push segue動畫不正確
- 14. 爲故事板創建的視圖添加子視圖
- 15. 故事板中的不同視圖
- 16. 爲什麼創建非故事板動畫不光滑
- 17. 當前視圖以故事板編程
- 18. self.view.frame不再當動畫故事板中的初始視圖控制器
- 19. 當我更改Xcode中Image視圖的顏色時,它不會在故事板上更改,爲什麼?
- 20. viewWillAppear的子視圖
- 21. 更新子視圖故事板中的文本視圖
- 22. 將故事板添加爲UIViewController中的子視圖
- 23. Xcode(故事板和segues):爲什麼代表而不是引用?
- 24. 使用故事板的當前視圖控制器
- 25. 爲什麼我的UIImageView模糊,當我把它放在我的故事板上?
- 26. 爲什麼我不能按CTRL拖動故事板的動作?
- 27. 什麼改變了viewWillAppear和viewWillLayoutSubviews之間的子視圖框架?
- 28. 當scrollview和圖像視圖都在故事板中時,圖像不會滾動
- 29. wpf使用TransformGroup和故事板的圖像動畫
- 30. 從故事板中重用視圖
我試圖獲得「frame.size」屬性,它並沒有在viewDidLoad中顯示它。另外,當我在IB中構建我的xib時,我能夠在viewWillAppear中獲取frame.size屬性,但出於某種原因,故事板不是這種情況。我想我得到的是我想要更多的肉給你的答案。 –
@Benny更新。老實說,你的問題有點不清楚,我盡我所能。 – benzado
好東西感謝您提供更多的細節!我確實已經自動調整了在IB中選擇的Subviews。讓我附上一些截圖 –