2011-03-16 79 views
1

我需要开发一个iPad应用程序,它应该管理两种方向模式(横向和纵向)。 根据official Apple iOS documentation,有两种方法可以继续。iPhone定位管理:什么是最有效的方法?

-The第一种包括在当接收到旋转事件调节视图元件。主要优点是我们只有一个ViewController - 第二个是为每个方向显示一个特定的ViewController。因此,我们有2个ViewControllers。

第二种方法似乎不错,但我'怕通过,将需要的ViewController的数字。更重要的是,ViewControllers中的“数据同步逻辑”必须被复制(或与ViewController隔离)才能在两个方向上使用。

我需要开发将包含许多“全定制元素”和许多ViewControllers中的应用。

如果任何人有意见或经验反馈,这将非常感激;)

感谢的阅读!

回答

3

第二种方式而应被:使用2个不同的视图(一个用于肖像,一对横向)和在willRotateToInterfaceOrientation:交换视图控制器的视图。无需复制您的数据逻辑。

何种使用方式?我会说:这取决于。

  • 如果lanscape和肖像模式的看法位置/大小区别仅在于,我用第一个(再加上你会得到的帧之间的变化很好的动画)
  • 如果横向和纵向太不同,我更喜欢第二个。
+0

你是对的,可能只有一个ViewController并为每个方向使用2个“全局”视图。 – ayorosmage 2011-03-16 20:15:03

+0

@alexandrebour你有第二种方式的例子吗?如果你可以在这里举例,这将是非常好的。谢谢。 – NightFury 2013-01-02 10:43:35

+0

但无法为不同视图中的不同文本框设置相同的出口 – Warewolf 2013-05-15 10:02:48

1

我通常通过取autoresizing技术在视图与视图中的控制器willAutorotateToInterfaceOrientationwillAnimateRotationToInterfaceOrientation方法的实现合并的优点解决这个问题。

有了自动尺寸调整技术,您可以轻松地调整由苹果公司提供的标准UI元素。如果你的UI元素没有不可能的布局,你也可以使用自动调整技术。您必须在父视图控制器中将autoresizesSubviews属性设置为YES,并为每个子视图选择自动调整行为。例如,如果您希望调整大小以保持视图居中,则可以在子视图中应用autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin掩码。

如果自动调整技术不能解决问题,那么您需要分别在视图控制器中实现- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration来调整每个冲突视图的大小。如果您有“完全自定义元素”,则需要通过这种方式调整它们。

在我特别的经验中,我更喜欢只有一个视图控制器和一个视图来处理所有的方向,并用这两种技术来管理它们。

希望这可以帮助你!

+0

嗨Ruben,感谢您的经验反馈;) – ayorosmage 2011-03-16 20:13:46

相关问题