我有一个UIViewController管理纵向视图和一些应用程序逻辑。但是,我需要为横向设置不同的视图。两个视图之间的小部件主要是相同的,但它们的布局非常不同。
我的第一次尝试是使用一个UIViewController和一个关联的XIB。在XIB中,我有两个UIView,一个LandscapeView用于横向,一个PortraitView用于纵向。
myController.xib
| myController(文件所有者)
| landscapeView
| - myWidget
| - ......
| portraitView
| - myWidget
| - ......
然后myController通过设置其view属性,根据屏幕方向在这些视图之间切换。
在我的例子中,myWidget在两个视图之间基本相同,只是它们的位置发生了变化。控制器有一个IBOutlet到其中一个,当发生方向改变时,这个IBOutlet以编程方式改变,指向正确的。
有更好的解决方案吗?
我检查了Apple的AlternateViews示例代码,但他们使用2个UIViewController进行2个不同的视图。我想将所有事件/委托处理代码仅保留在一个控制器中,而不是将它分成两个控制器。
答案 0 :(得分:0)
您可能在层次结构中有另一个UIView
,一个在创建/加载时被分配给视图控制器的view
属性的属性,您添加了landscapeView
和{ {1}}。如果是这种情况,那么您可以将myWidget添加到同一个父视图中,只要它是portraitView
数组中的最后一个,它就会在显示/隐藏其他两个视图时显示在顶部。如果您还没有父视图,并且手动管理subviews
属性,那么您可以添加一个作为父视图。