如何检测自动调整大小何时更改视图的边界

use*_*669 3 rotation key-value-observing ios

我有一个自定义的UITableViewController,它可以检测视图的边界何时发生变化,并使用它来更新每个tableviewcell显示的缩略图数量.但是,当我将tableView嵌入到另一个视图中时,边界不会改变,尽管我可以直观地确认它的大小调整.

我使用KVO来检测视图边界何时发生变化.从我自定义的TableViewController里面的viewDidLoad方法:

[self.view addObserver:self forKeyPath:@"frame" options:0 context:nil];
Run Code Online (Sandbox Code Playgroud)

如果我将tableViewController作为应用程序的根视图控制器并旋转iPad,则每次旋转都会更新边界,并且所有操作都完美无缺.

但是,我的tableview嵌入在另一个视图控制器的nib中,边界永远不会更新 - 框架也不会.尽管如此,我可以看到tableview本身在旋转进入/退出横向模式时正确调整大小 - 因此在应用程序的某个地方,真实的框架/边界正在发生变化,而且只是没有被报告.知道如何才能访问真正发生的事情吗?

jrt*_*ton 10

比KVO更好的解决方案是viewDidLayoutSubviews在视图控制器中实现.布局完成后,将在所有边界更改上调用此方法.