iPhone 方向管理:最有效的方法是啥?

Posted

技术标签:

【中文标题】iPhone 方向管理:最有效的方法是啥?【英文标题】:iPhone orientation management : what is the most efficient way to do?iPhone 方向管理:最有效的方法是什么? 【发布时间】:2011-03-16 16:18:03 【问题描述】:

我需要开发一个 iPad 应用程序,它应该管理两种方向模式(横向和纵向)。 根据official Apple ios documentation,有两种方法可以继续。

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

第二种方法似乎不错,但我担心需要的 ViewController 的数量。更重要的是,视图控制器中的“数据同步逻辑”必须被复制(或与视图控制器隔离)才能在两个方向上使用。

我需要开发的应用程序将包含许多“完全自定义元素”和许多 ViewController。

如果有人有建议或经验反馈,将不胜感激;)

感谢阅读!

【问题讨论】:

【参考方案1】:

第二种方法应该是:使用 2 个不同的视图(一个用于纵向,一个用于横向)并在 willRotateToInterfaceOrientation: 中交换视图控制器的视图。无需复制数据逻辑。

用什么方法?我会说:这取决于。

如果横向和纵向模式仅在视图的位置/大小上有所不同,我使用第一个(另外,您将获得帧变化的漂亮动画) 如果横向和纵向差别太大,我更喜欢第二个。

【讨论】:

你是对的,可以只有一个 ViewController 并为每个方向使用 2 个“全局”视图。 @alexandrebour 你有关于第二种方式的例子吗?如果你能在这里举个例子,那就太好了。谢谢。 但是没有办法为不同视图中的不同文本字段设置相同的出口【参考方案2】:

我通常利用视图中的autoresizing 技术结合视图控制器中willAutorotateToInterfaceOrientationwillAnimateRotationToInterfaceOrientation 方法的实现来解决这个问题。

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

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

根据我的特定经验,我更喜欢只有一个视图控制器和一个用于所有方向的视图,并使用这两种技术来管理它们。

希望对您有所帮助!

【讨论】:

嗨鲁本,感谢您的经验反馈;)

以上是关于iPhone 方向管理:最有效的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

将 OpenGL 用于 2d 游戏的最有效方法是啥?

我想在我的 rails 应用程序中实现组权限。最有效的方法是啥?

跟踪 iPhone 位置的最准确方法是啥?

验证 iPhone 上现有的邮政编码的最快方法是啥?

在 iphone/ipad 的持久存储上加密数据的最安全方法是啥?

在 iPhone 应用程序中播放声音剪辑的最简单方法是啥?