如何同时支持纵向和横向模式 - XIB 的可重用视图

Posted

技术标签:

【中文标题】如何同时支持纵向和横向模式 - XIB 的可重用视图【英文标题】:How to support both Portrait and Landscape mode - reusable view with XIBs 【发布时间】:2013-12-01 15:19:23 【问题描述】:

我不熟悉使用 XIB 进行方向更改。

我看到很多问题,如this 和this,但我似乎无法在这里找到简单的解决方案。我不想使用任何可以做到这一点的第 3 方框架,而是希望逐步了解我应该如何重新设计我的 XIB 和/或我应该如何创建出口。以及 XIB 视图代码(UIView 派生类)中应该包含的所有内容。

View XIB 目前还没有任何网点,我不确定我应该提供哪些网点。这是XIB的结构:

像上面一样,我会再有 2-3 个 XIB 用于加载视图,所有这些都到同一个视图控制器中。

再次,我知道 UIViewController 如何响应方向变化(preferredInterfaceOrientationForPresentationshouldAutorotateToInterfaceOrientation),但不知道如何在每个此类事件中使用适当的插座加载相应的 XIB。 ,

【问题讨论】:

【参考方案1】:

这可能是一项非常棘手的任务。您在视图中添加插座并在视图控制器中以编程方式重新排列它们是正确的。这是一项相当艰巨的任务,需要花费大量时间。

我建议使用 XCode 中提供的自动布局工具来简化这项工作,并帮助使过渡看起来更平滑。请检查以下链接:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/Introduction/Introduction.html http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1

如果您在用户更改方向时更改视图的内容,而不仅仅是排列,则每次用户更改方向时重新加载整个 XIB 可能是一个不错的选择。查看有关支持多种界面方向的 Apple 文档。

我希望这会有所帮助:)

【讨论】:

+1,谢谢。问题是 - 它适用于 iOS 5-7。所以我认为简单地使用自动布局不会有帮助。 谢谢尼拉夫。在另一个 SO 中有一些有趣的解决方案:***.com/questions/12411980/…

以上是关于如何同时支持纵向和横向模式 - XIB 的可重用视图的主要内容,如果未能解决你的问题,请参考以下文章

将xib文件中的视图旋转为横向模式[重复]

横向和纵向的分隔 xib

如何仅支持一个 UIView 的横向/纵向方向

支持 UIDocumentInteractionController 的横向和纵向

如何创建一个同时支持横向和纵向但不在它们之间旋转的视图控制器(保持其初始方向)

仅使用一个 ViewController 从 XIB 切换