我有一个面向iOS8的应用程序,初始视图控制器是UISplitViewController。我使用故事板,以便它可以为我实例化所有内容。
由于我的设计,我需要在iPhone的纵向模式下显示SplitViewController的主视图和详细视图。因此,我正在寻找一种方法来覆盖此UISplitViewController的trait collection。
我发现我可以使用
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator!) { ... }
但不幸的是,只有覆盖子控制器特征集合的方法:
setOverrideTraitCollection(collection: UITraitCollection!, forChildViewController childViewController: UIViewController!)
我无法在我的UISplitViewController子类中为自己执行此操作。
我查看了一个来自苹果的示例应用程序适应性照片。在这个应用程序中,作者使用特殊的TraitOverrideViewController作为根视图控制器,并在他的视图控制器setter中使用了一些魔法来使其所有工作正常。
对我来说,这看起来很可怕。有没有绕过覆盖特征的方法?如果没有,我该如何使用故事板来使用相同的技巧呢?换句话说,如何仅注入某些视图控制器作为根视图处理我的UISplitViewController与故事板的特征?
AAPLTraitOverrideViewController.m
代码只有20行左右。你可能只需要花费10分钟将其转换为Swift,然后就不必再去看它了。 - Mundi