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
技术结合视图控制器中willAutorotateToInterfaceOrientation
和willAnimateRotationToInterfaceOrientation
方法的实现来解决这个问题。
使用自动调整大小技术,您可以轻松调整 Apple 提供的标准 UI 元素的大小。如果您的 UI 元素没有不可能的布局,您也可以将自动调整大小技术应用于它们。您必须在父视图控制器中将autoresizesSubviews
属性设置为YES
,并为每个子视图选择自动调整大小行为。例如,如果您希望它向右调整大小以保持视图居中,您可以在子视图中应用autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin
掩码。
如果自动调整大小技术不能解决问题,那么您需要通过在视图控制器中实现 - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
来分别调整每个冲突视图的大小。如果您有“完全自定义元素”,则需要以这种方式调整它们的大小。
根据我的特定经验,我更喜欢只有一个视图控制器和一个用于所有方向的视图,并使用这两种技术来管理它们。
希望对您有所帮助!
【讨论】:
嗨鲁本,感谢您的经验反馈;)以上是关于iPhone 方向管理:最有效的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
我想在我的 rails 应用程序中实现组权限。最有效的方法是啥?