traitCollection.horizontalSizeClass 在 iOS 8.1 上报告 Compact,在 iOS 8.4 和 9.x 上报告 Regular
traitCollection.horizontalSizeClass reports Compact on iOS 8.1, Regular on iOS 8.4 and 9.x
我在代码中为 UIViewController 子类的导航栏添加了一个完成按钮,仅用于 iPad,更准确地说是用于常规尺寸 Class,使用以下代码。我们支持 iOS 8+。 if 语句 returns Compact Size Class when 运行 on iPad Air 2 with iOS 8.1,它正确地报告 Regular for 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' 上使用页面 Sheet 模式呈现。
我通过这样调整条件解决了这个问题:
presentingViewController?.traitCollection.horizontalSizeClass == .Regular
我在代码中为 UIViewController 子类的导航栏添加了一个完成按钮,仅用于 iPad,更准确地说是用于常规尺寸 Class,使用以下代码。我们支持 iOS 8+。 if 语句 returns Compact Size Class when 运行 on iPad Air 2 with iOS 8.1,它正确地报告 Regular for 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' 上使用页面 Sheet 模式呈现。
我通过这样调整条件解决了这个问题:
presentingViewController?.traitCollection.horizontalSizeClass == .Regular