1

我将代码中的“完成”按钮添加到导航栏中,仅适用于 iPad 的 UIViewController 子类,更准确地说是使用以下代码的常规尺寸类。我们支持 iOS 8+。if 语句在带有 iOS 8.1 的 iPad Air 2 上运行时返回 Compact Size Class,并且它正确报告 iOS 8.4 或 iOS 9 的常规。这是 iOS 中的错误,还是我做错了什么?

/// Add 'Done' button for iPad/Regular Size Class
private func addDoneButtonIfNeeded() {
    if traitCollection.horizontalSizeClass == .Regular {
        let doneButton = UIBarButtonItem(barButtonSystemItem: .Done, target: self, action: #selector(ApprovalDetailViewController.doneAction))
        doneButton.tintColor = UIColor.whiteColor()
        navigationItem.leftBarButtonItem = doneButton
    }
}

在 if 语句上设置断点时的 lldb 输出

iOS 8.1: po traitCollection.horizontalSizeClass.rawValue -> 1
iOS 8.4: po traitCollection.horizontalSizeClass.rawValue -> 2

我在“iPad”上使用 Page Sheet 模式演示。

4

1 回答 1

3

我通过调整这样的条件解决了这个问题:

presentingViewController?.traitCollection.horizontalSizeClass == .Regular
于 2016-05-13T10:48:40.597 回答