Ротация отдельно взятого экрана в приложении на 180 градусов

swift4

#1

Здравствуйте.
Как прописать код, чтобы на одном UIViewController была возможность поворачивать экран на 180 градусов? То есть, если пользователь смотрит на телефон в портретном режиме, то и UIViewController в портретном режиме, если телефон переворачивается на 180 градусов, то и UIViewController переворачивается. Только для одного экрана из всего приложения. Подобная функция есть в приложении Диктофон для iPhone или Яндекс.Карты.
Спасибо


#2

https://stackoverflow.com/questions/28243241/rotation-only-in-one-viewcontroller


#3

Спасибо. Я видел уже эту заметку и все равно остались вопросы, как именно это реализовать лучше


#4

У меня используется вариант с отмеченным ответом.
Это прописывается в AppDelegate.
Любой VC который должен поворачиваться, в нем нужно создать метод
@objc func canRotate() {}


#5
  • Спасибо, получилось. Но получилось не совсем то, что нужно. В данном примере меняется ориентация с портерной на горизонтальную, а мне надо с портретной только на перевернутую на 180 градусов, то есть это портретная только верх ногами.

  • И еще, как потом при выходе с этого VC, отключить эту функцию, а то если в горизонтальном режиме выйти из этого VC, то и остальное приложение отображается в горизонте


#6

Вместо всех ориентаций укажите только 2 нужные через массив [.portrait, .upSideDown] вроде так, это будет для тех VC которые нужно поворачивать.
Если вы прописали canRotate только в нужном VC, а не в базовом, должно работать. При выходе должны вернуться в portrait.
Либо можете попробовать принудительно указать портрет при выходе
UIDevice.current.setValue(Int(UIInterfaceOrientation.portrait.rawValue), forKey: "orientation")