一个视图控制器,纵向和横向两个视图

Posted

技术标签:

【中文标题】一个视图控制器,纵向和横向两个视图【英文标题】:One view controller, two views for portrait and landscape 【发布时间】:2010-08-09 21:48:03 【问题描述】:

我有一个 UIViewController 来管理纵向视图和一些应用程序逻辑。但是,我需要为横向设置不同的视图。两个视图之间的小部件基本相同,但它们的布局非常不同。

我的第一次尝试是使用一个 UIViewController 和一个关联的 XIB。在 XIB 中,我有两个 UIView,一个 LandscapeView 用于横向,一个 PortraitView 用于纵向。

myController.xib |myController(文件所有者) |风景 |-- 我的小部件 |-- ... |人像视图 |-- 我的小部件 |-- ...

然后 myController 通过设置 view 属性根据屏幕方向在这些视图之间切换。

在我的示例中,两个视图之间的 myWidget 基本相同,只是它们的位置发生了变化。控制器有一个指向其中一个的 IBOutlet,当方向发生变化时,这个 IBOutlet 会以编程方式更改,以指向正确的那个。

有没有更好的解决方案?

我检查了 Apple 的 AlternateViews 示例代码,但他们使用 2 UIViewController 来处理 2 个不同的视图。我想将所有事件/委托处理代码仅保留在一个控制器中,而不是在 2 个控制器之间拆分。

【问题讨论】:

【参考方案1】:

您可能在层次结构中有另一个UIView,它在创建/加载时分配给视图控制器的view 属性,您已添加landscapeViewportraitView。如果是这种情况,那么您可以将 myWidget 添加到同一个父视图中,只要它在 subviews 数组中的最后一个,它就会在您显示/隐藏其他两个视图时显示在顶部。如果您还没有该父视图,并且正在手动管理 view 属性,那么您可以添加一个作为父视图。

【讨论】:

以上是关于一个视图控制器,纵向和横向两个视图的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个同时支持横向和纵向但不在它们之间旋转的视图控制器(保持其初始方向)

UIView 旋转,模态视图横向和纵向,父级无法渲染

android studio中的纵向到横向视频视图和控制器重启问题

视图控制器处于横向模式,但我从纵向模式获取框架?

将纵向视图控制器推到横向视图控制器上?

Iphone:无法从我的横向视图切换回纵向视图