UISplitViewController 始终在 iPad 纵向模式下显示主视图 iOS 9

UISplitViewController always show master view in iPad portrait mode iOS 9

我正在使用 UISplitViewController 构建一个通用应用程序并面向 iOS 9 及更高版本。应用语言为 Objective-C.

开始使用 Xcode Master/Detail 模板并以标准方式设置我的视图后,我意识到如果我在屏幕上保留主视图,应用程序会更好次(iPad),包括设备处于纵向模式时。然而,无论我多么努力地搜索,我都找不到任何东西来帮助我了解这是如何实现的。我知道这是以前使用 splitViewController:shouldHideViewController:inOrientation:

实现的

但是,此方法在 iOS 9 中已弃用,我不知道用什么替代它以及为什么。我查看了 UISplitViewController 的新委托方法,发现它们完全缺乏任何级别的直观性。

我非常感谢有关替换 splitViewController:shouldHideViewController:inOrientation 的一些指示:以及如何使用它来保持主视图始终显示在 iPad。

子类 UISplitViewController

无需专门跟踪方向变化:主图和细节仍将按顺序显示在 iPhone 纵向模式下,大多数 iPhone 横向模式。
preferredDisplayMode:.allVisible 仅影响两个视图 可以 同时可见的模式。

Swift

class SplitViewController: UISplitViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        preferredDisplayMode = .allVisible
    }
}

Obj-C

- (void)viewDidLoad {
    [super viewDidLoad];
    self.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;

}

iPad 人像 & iPhone 8 Plus 风景

如果有人最近查看此主题,.allVisible 在 IOS14 中已弃用,请使用:splitVC.preferredDisplayMode = .oneBesideSecondary

aSplitViewController.preferredDisplayMode = .oneBesideSecondary