(我已阅读有关此主题的其他答案,但它们指的是较旧的技术和实践。)
我有一个 iOS 应用程序,包含 3 个页面(每个选项卡 1 个)。故事板架构如下:
TabBarController
-> Navigation Controller 1 -> View Controller 1
-> Navigation Controller 2 -> View Controller 2
-> Navigation Controller 3 -> View Controller 3
当在小型设备(例如 iPhone 纵向)和大型设备(例如 iPad 全屏)上使用时,该应用程序具有主要的 UI 设计差异。基本架构保持不变,但每个 View Controller 需要显示一组非常不同的 UI 元素。
我可以通过根据尺寸类安装和卸载元素以及自动布局约束来响应界面生成器中的尺寸变化,但这将非常笨拙和脆弱。
在过去(~2014 年),Apple 的建议是:
如果您想根据设备是纵向还是横向显示相同的数据,方法是使用两个单独的视图控制器。一个视图控制器应该管理数据在主要方向(通常是纵向)上的显示,而另一个视图控制器管理数据在备用方向上的显示。
尽管出现了 Size Classes,但我觉得这仍然是我特定设计的最佳解决方案(记住要考虑 size classes 和 split-view、slide-in。)
问题 1:我应该在我的应用程序的什么时候检测特征变化?
问题 2:(假设我已经从情节提要加载了备用视图控制器)以响应特征更改,我应该如何最好地转换/呈现备用视图控制器?