То, что я пытаюсь сделать:Child View Controller для поворота Хотя Родитель View Controller Не ли
родительского вида, который управляется Родитель View Controller НЕ ДОЛЖНЫ ПОВОРОТ.
Ребенок Вид, который управляется Child View Controller ДОЛЖЕН ПОВОРОТ для всех ориентаций.
Что я пробовал:
ParentViewController
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return .Portrait
}
override func shouldAutorotate() -> Bool {
return true
}
fun addChildViewController() {
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
self.childViewController = storyBoard("Child View Controller") as? ChildViewController
self .addChildViewController(self.childViewController!)
self.childViewController! .didMoveToParentViewController(self)
self.view .addSubview(self.childViewController!.view)
self.childViewController!.view.frame = CGRectMake (40, 200, 400, 250)
}
ChildViewController
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return .All
}
override func shouldAutorotate() -> Bool {
return true
}
Поддерживаемые ориентации в Xcode Информации развертывания установлены на все четыре.
Что я получаю:
Ни один из поворота представления. Если я устанавливаю ротацию родителя для всех, все виды вращаются вместе. Так что это все или ничего.
UPDATE
Когда я пытаюсь положить наблюдателю UIDeviceOrientationDidChangeNotification и использовать UIDevice.currentDevice(). Ориентацию для вращения childView с помощью CGAffaineTransformMakeRotate, я получаю желаемый результат. ОДНАКО, т. Е. Если я повернусь к пейзажу и попытаюсь вытащить центр уведомлений (или, если я получу системное уведомление), который все еще находится в портретной ориентации (поскольку приложение по-прежнему остается в портрете), повернут childView поворачивается обратно к портрету, чтобы почтить статусную строку/центр уведомлений/уведомлений.
Приложение для камеры iOS - лучший пример, который я могу представить. Основной холст не вращается в разные ориентации, но строка состояния за кулисами поворачивается, соблюдая порядок вращения устройства. Кроме того, подвиды вращаются внутри себя, чтобы соблюдать разные ориентации. Я пытаюсь добиться такого поведения ....
Не уверен, что это сработает, возьмите его как идею. Я определенно установил бы, что приложение поддерживает только одну (портретную) ориентацию, а затем я попытаюсь обнаружить вращение устройства (а не экрана) и отреагировать на это, вращая ручку вручную в середине экрана. Я думаю, 'viewWillTransition (to: with:)' не будет работать, поэтому вам нужно найти подходящее решение. – Andrej
Вы имеете в виду вращение с помощью чего-то вроде CGAffineTransform? – Gizmodo
Да, точно CGAffineTransform. У вас интересная ситуация. Хотелось бы помочь и на самом деле попытаться написать какой-то код для решения этой проблемы, но я боюсь, что я буду занят, поэтому я не смогу получить здесь свои грязные руки. – Andrej