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

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

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

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

你有什么建议?

【问题讨论】:

    标签: iphone ios ipad uiview orientation


    【解决方案1】:

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

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

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

    【讨论】:

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