Я хочу поддерживать макет, подобный Safari, где в горизонтально-обычных средах кнопки отображаются на панели навигации, но в горизонтально компактных средах некоторые кнопки находятся на панели навигации, а некоторые кнопки на панели инструментов.Реорганизация панели инструментов и NavigationBar после TraitCollectionDidChange
Это то, что у меня в traitCollectionDidChange
override func traitCollectionDidChange(previousTraitCollection: UITraitCollection?) {
let editingContextButton = editing ? resetButton : doneButton
if traitCollection.horizontalSizeClass == .Regular {
navigationController?.toolbarHidden = true
navigationItem.leftBarButtonItems = [editButtonItem(), helpButton]
navigationItem.rightBarButtonItems = [editingContextButton, addButton]
} else if traitCollection.horizontalSizeClass == .Compact{
navigationController?. toolbarHidden = false
navigationItem.leftBarButtonItems = [editButtonItem()]
navigationItem.rightBarButtonItems = [editingContextButton]
navigationController?.toolbarItems = [helpButton, UIBarButtonItem(barButtonSystemItem: .FlexibleSpace, target: nil, action: nil), addButton]
}
}
Но, кажется, есть проблема при переходе от обычного горизонтального размерного класса с компактным. Элементы на панели навигации всегда правильны, но элементы панели инструментов обрезаны или пусты.
При представлении ViewController он всегда настроен и отображается правильно, и он всегда прав в горизонтально регулярном классе размеров - возникает проблема, когда класс размера изменяется с обычного на компактный.
Вот пример, показывающий кнопку добавления в правом нижнем углу, исчезающую с панели инструментов после изменения класса размера.
То же самое происходит при повороте устройства на 5,5" айфонов, и портрет на IPad, панель просто пустой после активации многозадачности. Что здесь проблема? Спасибо!