У меня есть приложение, ориентированное на iOS8, а начальный контроллер представления - UISplitViewController. Я использую раскадровку, так что она любезно создает для меня все.
Из-за моего дизайна мне нужен SplitViewController для отображения как основного, так и подробного представления в портретном режиме на iPhone. Итак, я ищу способ переопределить коллекцию признаков для этого UISplitViewController.
Я обнаружил, что могу использовать
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator!) { ... }
но, к сожалению, есть только методы для переопределения коллекций признаков дочерних контроллеров:
setOverrideTraitCollection(collection: UITraitCollection!, forChildViewController childViewController: UIViewController!)
и я не могу сделать это для себя в своем подклассе UISplitViewController.
Я проверил пример приложения Adaptive Photos от Apple. И в этом приложении автор использует специальный TraitOverrideViewController как root и некоторую магию в его установщике viewController, чтобы все это работало.
Для меня это выглядит ужасно. Есть ли способ переопределить черты? Или, если нет, как я могу использовать тот же хак с раскадровкой? Другими словами, как ввести некоторый viewController в качестве корневого только для обработки черт для моего UISplitViewController с раскадровкой?
AAPLTraitOverrideViewController.m
- это чуть больше 20 строк кода. Вам понадобится около 10 минут, чтобы перевести это на Swift, и тогда вам не придется снова смотреть на это. - person Mundi   schedule 25.08.2014