ios - iPhone如何显示不同的 View Controller 以响应设备旋转?

标签 ios uiviewcontroller uiinterfaceorientation autorotate

我注意到大多数消费者友好的 Android 和 iPhone 健身应用程序都有两种界面模式 - 在纵向模式下,用户可以获得更详细的信息,但是当用户将设备切换到横向模式时,会添加全屏图表覆盖整个屏幕。

我对如何实现到不同 View Controller 的转换以响应 iPhone 上的设备旋转感兴趣。我最初的想法是拦截 (willRotateToInterfaceOrientation 事件,然后获取应用程序委托(delegate)并添加一个全屏图形 View Controller 到窗口)。

是否有更好的方法将 iPhone 旋转转变为另一个 View Controller 的过渡?就像隐藏状态栏并在横向模式下插入模态视图 Controller 并带有动画?

最佳答案

首先问问自己是否真的需要一个单独的 View Controller 。一个 View Controller 可以轻松隐藏或取消隐藏图形。 如果该图需要自己的 View Controller ,那么您可以使用包含引用其自己的 View Controller 的图的容器 View 。这就是容器 View 的用途。 然后,“主” View Controller 将隐藏和取消隐藏容器 View 以响应旋转事件(并相应地布局它们等。)

如果您希望从其 super View 中添加或删除容器 View (最有可能是从“主” View Controller 的角度来看的 self.view),那么就这样做,而不是隐藏和取消隐藏。这可能是最合适的。

此应用程序的优点是,无论您所处的导航结构如何,无论旋转 View Controller 是否被推送或以模式方式呈现,无论您是在选项卡栏驱动的应用程序还是单个 View 中,它都可以工作应用程序,无论您是否使用 Storyboard ,都可以与 IB 一起使用以及以编程方式等。pp。

从应用程序的委托(delegate)获取窗口实例没有任何问题。我只是不认为有必要这样做。与其他选择相比,对我来说似乎相当复杂。

关于ios - iPhone如何显示不同的 View Controller 以响应设备旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16693310/

相关文章:

ios - iPhone Mapkit 中的图像

ios - init 方法与 viewDidLoad 类型的方法

ios - 不断在两个 View Controller iOS 之间传递数据

ios - subview Controller 必须有一个共同的父 View Controller ?

objective-c - 自动旋转标签栏应用程序

ios - 在 iOS 中锁定一个 View 方向

ios - 当 block 内的 ivar 可能被释放时,管理内存的最佳方法是什么?

ios - 清除 iPhone 和 iPad 上的 View Controller

iphone - 在其他设备上测试我的 iPad 应用程序

iphone - 在 IOS5 中禁用横向方向