【问题标题】:How to detect when autoresizing changes the view's bounds如何检测自动调整大小何时更改视图的边界
【发布时间】:2012-11-18 08:16:33
【问题描述】:

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

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

[self.view addObserver:self forKeyPath:@"frame" options:0 context:nil];

如果我将 tableViewController 设置为应用程序的根视图控制器并旋转 iPad,则每次旋转都会更新边界,并且一切正常。

但是,当我的 tableview 嵌入另一个视图控制器的 nib 时,边界永远不会更新 - 框架也不会更新。尽管如此,我可以看到 tableview 本身在旋转进入/退出横向模式时正在正确调整大小 - 所以在应用程序的某个地方,真实的框架/边界正在改变,只是没有被报告。知道如何了解真实情况吗?

【问题讨论】:

    标签: ios rotation key-value-observing


    【解决方案1】:

    比 KVO 更好的解决方案是在您的视图控制器中实现 viewDidLayoutSubviews。一旦布局完成,这将在所有边界更改上调用。

    【讨论】:

      【解决方案2】:

      事实证明,在界面构建器文件中,tableview 丢失了它作为 tableViewController 视图的引用出口。加回来解决了这个问题!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-02
        • 1970-01-01
        • 2012-07-17
        相关资源
        最近更新 更多