我需要开发一个iPad应用程序,它应该管理两种方向模式(横向和纵向)。 根据{{3}},有两种方法可以继续。
- 第一个包括在收到旋转事件时调整视图元素。主要优点是我们只有一个ViewController - 第二个包括为每个方向显示特定的ViewController。因此,我们有2个ViewControllers。
第二种方法似乎很好,但我担心需要的ViewController数量。更重要的是,ViewControllers中的“数据同步逻辑”必须复制(或与ViewController隔离)才能在两个方向上使用。
我需要开发的应用程序将包含许多“完全自定义元素”和许多ViewControllers。
如果有人有建议或经验反馈,我们将非常感激;)
感谢您的阅读!
答案 0 :(得分:3)
第二种方式应该是:使用2个不同的视图(一个用于纵向,一个用于横向)并在willRotateToInterfaceOrientation:
中交换视图控制器的视图。无需复制数据逻辑。
使用哪种方式?我会说:这取决于。
答案 1 :(得分:1)
我通常通过利用视图中的autoresizing
技术以及视图控制器中willAutorotateToInterfaceOrientation
和willAnimateRotationToInterfaceOrientation
方法的实现来解决这个问题。
使用自动调整技术,您可以轻松调整Apple提供的标准UI元素的大小。如果您的UI元素没有不可能的布局,您也可以将自动调整技术应用于它们。您必须在父视图控制器中将autoresizesSubviews
属性设置为YES
,并为每个子视图选择自动调整行为。例如,如果您希望将视图调整到右侧以保持视图居中,则可以在子视图中应用autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin
蒙版。
如果自动调整技术不起作用,那么您需要通过在视图控制器中实现- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
来单独调整每个冲突视图的大小。如果您有“完全自定义元素”,则需要以这种方式调整它们的大小。
根据我的特殊经验,我更喜欢只有一个视图控制器和一个视图用于所有方向,并使用这两种技术进行管理。
希望这能帮到你!