0

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

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

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

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

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

有更好的解决方案吗?

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

4

1 回答 1

0

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

于 2010-08-10T02:13:31.163 回答