【发布时间】:2011-01-12 16:42:38
【问题描述】:
我有一个带有 8 个 UIViewControllers 的应用程序,通过从左/右/上/下导航呈现。它们在应用程序启动时创建并保存在 NSArray 中。任何时候都只会将其中的 1 个添加到视图树 (addSubview:) 中 - 其余的只是放在缓存中,直到需要它们为止。
现在我遇到的问题是旋转到横向时。只有当前可见的视图将 bounds.size 更改为 Landscape。当导航到下一个视图时,该视图仍然认为它是纵向的(但包含的视图都将在横向中查看)。
顺便说一下,应用程序的视图层次结构如下:UIWindow -> Main UIViewController -> 8 个缓存的 UIViewController 中的 1 个。
例如: * 改变方向: - 主 UIViewController.view.bounds.size = 480x300 (OK) - 缓存的 UIViewControllers view.bounds.size 之一 = 480x300 (OK) * 转到下一个视图: - 主 UIViewController.view.bounds.size = 480x300 (OK), - 另一个缓存的 UIViewControllers view.bounds.size = 320x460 (??)
不知道发生了什么。我是否必须以某种方式告诉缓存的 UIViewControllers 方向/大小发生了变化或其他什么?
非常感谢
【问题讨论】:
-
为什么不使用 UINavigationController 来推送/弹出和替换当前视图?
-
即使使用 UINavigationController,我仍然遇到问题。还有其他一些事情会阻止视图调整大小。
标签: iphone ios uiview uiviewcontroller orientation