traitCollection.horizontSizeClass сообщает, что Compact для iOS 8.1, Regular для iOS 8.4 и 9.x

Я добавляю кнопку "Готово" в коде на панель навигации для подкласса UIViewController только для iPad, точнее для класса обычного размера с приведенным ниже кодом. Мы поддерживаем iOS 8+. Оператор if возвращает класс компактных размеров при запуске на iPad Air 2 с iOS 8.1 и правильно отображает Regular для 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
    }
}

вывод lldb, когда точка останова установлена ​​в операторе if

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

Я использую модальную презентацию Page Sheet на iPad.

1 ответ

Решение

Я решил это, изменив условие следующим образом:

presentingViewController?.traitCollection.horizontalSizeClass == .Regular
Другие вопросы по тегам