traitCollection.horizo​​ntalSizeClass报告iOS 8.1上的Compact,iOS 8.4和9.x上的Regular

时间:2016-05-11 13:02:31

标签: ios size-classes uitraitcollection

我在代码中将一个Done按钮添加到导航栏中,仅用于iPad的UIViewController子类,更准确地说是使用以下代码的常规大小类。我们支持iOS 8+。当在带有iOS 8.1的iPad Air 2上运行时,if语句返回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模式演示。

1 个答案:

答案 0 :(得分:1)

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

presentingViewController?.traitCollection.horizontalSizeClass == .Regular