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

问题描述:

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

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

myController.xib
| myController的(文件的所有者)
| landscapeView
| - 进myWidget
| - ...
| portraitView
| - 进myWidget | - 。 ..

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

在我的示例中,myWidget在两个视图之间基本相同,只是它们的定位更改。控制器有一个IBOutlet指向其中的一个,并且此IBOutlet在发生方向更改时以编程方式更改,以指向正确的IBOutlet。

有没有更好的解决方案?

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

你可能有另一个UIView层次结构中,当创建/加载的被分配到视图控制器的view财产之一,已添加landscapeViewportraitView。如果是这种情况,那么您可以将myWidget添加到相同的父视图中,只要它位于subviews阵列中的最后一个,它将显示在顶部,因为您显示/隐藏其他两个视图。如果您尚未拥有该父视图,并手动管理view属性,则可以添加一个父视图。