ios - 什么时候调用 ViewWillLayoutSubviews 和 ViewDidLayoutSubviews 方法?

标签 ios objective-c ios7 uiviewcontroller ios6

什么时候调用 UIViewController 的 ViewWillLayoutSubviewsViewDidLayoutSubviews 方法? willLayoutSubviews 之前 View 框架的状态是什么?

最佳答案

来自documentation:

When a view's bounds change, the view adjusts the position of its subviews. Your view controller can override this method to make changes before the view lays out its subviews. The default implementation of this method does nothing.

viewWillLayoutSubviews 会在您的 View Controller 的 View 边界发生变化时被调用。当加载 View 时,发生旋转事件时,或者当 subview Controller 的大小被其父 View Controller 更改时,都会发生这种情况。 (可能还有其他一些情况)。如果在该 View 自行布局之前(以及重新应用约束之前)您需要更新任何内容,您应该在此处进行。您通常应该在此处更新约束,因为更新约束会导致另一个布局传递。

viewDidLayoutSubviews 在您所有的 subview 都布置好后被调用。例如,如果您需要通过手动调整框架来微调该布局,就可以在这里进行。

View Controller 生命周期可能有点困惑,但如果您要进行大量 iOS 开发,则值得尝试真正理解。 This article是一个非常好的概述。

关于ios - 什么时候调用 ViewWillLayoutSubviews 和 ViewDidLayoutSubviews 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23457391/

相关文章:

iphone - 在 Objective-C 中是否有检测 AirPlay 的通知?

iphone - 将您自己的按钮挂接到 iOS 的 "share list"?

ios - 在 App iOS 7 中使用用户墙纸作为背景

iphone - 用于 iOS 应用程序的预测字典文本输入 API/框架

objective-c - 在 prepareForSegue 中设置 UIImageView.image

ios - UICollectionViewCell 忽略指定大小但尊重原点

iphone - IOS 7 - 添加覆盖崩溃应用程序

iphone - iOS Dismis 的 ViewController 堆栈

ios - 如何在 ios 和 swift 语言中将字符串类型数据从 firebase 数据库转换为整数类型数据

ios - Objective-C - 将自身的引用传递给子对象