当方向改变时,视图中何时重新加载资源?

Posted

技术标签:

【中文标题】当方向改变时,视图中何时重新加载资源?【英文标题】:When in the view reload resources when orientation changes? 【发布时间】:2011-12-01 16:02:24 【问题描述】:

我的视图有很多子视图,每个子视图都有自己的图形,纵向和横向方向不同。当方向改变时,我应该何时加载新图形?

如果不应该是 layoutSubviews,我也不喜欢从 UIViewController 重新加载视图中的资源的想法,因为我拥有复杂的视图层次结构(它需要向下传递此信息)。

还可以选择在 NSNotificationCenter 中注册每个视图中的方向更改,并在更改时加载新资源。但我也不太喜欢它,因为我相信 ios 中应该有实现这一点的机制。或者,也许我应该换一种方式思考,为纵向和横向构建不同的视图...

你有什么建议?

【问题讨论】:

【参考方案1】:

我会让您的子视图都扩展一个自定义视图类,该类具有在纵向和横向图形之间交换的-setOrientation: 方法。然后在您的视图控制器中,我将覆盖-willRotateToInterfaceOrientation:duration: 并添加一个循环来设置所有孩子的方向,从而在方向改变时导致图形交换。

我认为这是最直接的方式。使用 NSNotificationCenter 可能会很棘手,并且您无法保证每个孩子都会收到通知。

不管怎样,我就是这样做的。如果您需要示例,请告诉我。

【讨论】:

感谢您的回答,这也是我的首选方式。但是有一个问题,那就是可重用性。让我们假设我创建了一个很棒的视图,有人想在他们的项目中使用它。这个使用我的视图的人将不得不手动调用 setOrientation 方法,这并不明显,因为它不是 UIView 的标准元素。 嗯,过了一会儿,我认为这无论如何都是正确的解决方案,因为如果视图根据方向改变它的外观,那么必须有一种机制来告诉视图它。在这种情况下,这个解决方案应该是完全没问题的,并且是视图用户所期望的。

以上是关于当方向改变时,视图中何时重新加载资源?的主要内容,如果未能解决你的问题,请参考以下文章

停止 UITableView 在方向更改时重新加载数据

当方向改变时重新定位控件

自定义 UITableViewCell 背景,何时重新加载等

Android webview如何检测何时重新加载

当 deviceOrientation 改变时在 UITableView 中重新加载数据

更改数组后无法在 Tableview 中重新加载数据?