一个视图控制器,两个肖像和风景视图

时间:2010-08-09 21:48:04

标签: iphone uiview screen-orientation

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

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

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

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

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

有更好的解决方案吗?

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

1 个答案:

答案 0 :(得分:0)

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