Уведомление о ротации устройства не работает должным образом. IOS Swift

func shouldirotate(){ var whichwaywhere: String { if UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeLeft { return "left" } if UIDevice.currentDevice().orientation == UIDeviceOrientation.LandscapeRight { return "right" } if UIDevice.currentDevice().orientation == UIDeviceOrientation.PortraitUpsideDown { return "down" } return "I don't Care" } println(whichwaywhere) } 

когда я создаю функцию, которая постоянно проверяет себя (прикрепляя toirotate к NSTimer), я могу проверить ориентацию. Как я могу сказать, что функция запускается при активации UIDeviceOrientationDidChangeNotification?

Чтобы запустить UIDeviceOrientationDidChangeNotification, у меня есть переменная:

 var rotatenote: Bool = UIDevice.currentDevice().generatesDeviceOrientationNotifications 

и в переопределении ViewDidLoad у меня есть:

 override func viewDidLoad() { UIDevice.currentDevice().beginGeneratingDeviceOrientationNotifications() rotatenote = true } 

Это правильный способ использования и объявления этого свойства? как я могу заставить функцию работать с DeviceOrientationNotification?

PS: У меня есть rotatenote = true в ViewDidLoad, потому что, если я попытаюсь прикрепить его к объявлению переменной, как обычно, он говорит: «Невозможно назначить результат этого выражения». Смотри ниже

 var rotatenote: Bool = UIDevice.currentDevice().generatesDeviceOrientationNotifications = true 

Есть несколько способов сделать это. Не уверен, в какой ОС вы беспокоитесь, но в iOS 8 у вас есть два простых варианта. Вы можете зарегистрировать наблюдателя для

UIDeviceOrientationDidChangeNotification

или вы можете переопределить

func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)

Вам не нужно

 UIDevice.currentDevice().beginGeneratingDeviceOrientationNotifications() 

Таким образом, либо в viewDidLoad добавьте:

 NSNotificationCenter.defaultCenter().addObserver(self, selector: "functionThatYouWantTriggeredOnRotation", name: UIDeviceOrientationDidChangeNotification, object: nil) 

Если у вас есть функция functionThatYouWantTriggeredOnRotation которая делает расчет …

В качестве альтернативы вы можете просто предоставить переопределение для viewWillTransition и не добавлять наблюдателя для UIDeviceOrientationDidChangeNotification

 override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { if UIDevice.currentDevice().orientation.isLandscape { //do your thing } } 
  • PerformSelector может вызвать утечку - Лучшее решение
  • Ошибка CGContextSaveGState
  • Как использовать профиль подготовки, который не входит в мою учетную запись, для распространения приложения?
  • Почему API-интерфейсы Xcode (Swift 3) не установлены с iOS 10+, когда целью развертывания является 9,3?
  • Проблема с обращением к интерфейсу прикладного интерфейса Xcode
  • XCode по-прежнему указывает, что сборка выполняется, когда она не
  • Как получить какао-стручки для работы?
  • Делайте то, что нажата кнопка «Назад»
  • Что нужно выбрать для универсального размера «Retina 3.5 fullscreen» или «Retina 4 fullscreen»?
  • Привязанный текст UILabel отключен в UICollectionViewCell, но не в UITableViewCell
  • Как создать проект Xcode из командной строки?
  • Interesting Posts

    Как сканировать сети в этом районе

    Вернуть две разные ячейки из cellForRowAtIndexPath

    Как отключить множественный выбор фотографий в iOS из <input type = "file" accept = "image / *; capture = camera">

    Распознавание формы (распознает рисованные основные фигуры – прямоугольники, эллипсы, треугольники и т. Д.)?

    UITableView с плавающими ячейками

    Что я должен делать, когда пользователь не может отправить сообщение в твиттер

    Для iOS, Safari, VoiceOver, как мне заставить VoiceOver читать пользовательские переключатели?

    Рекомендуемые политики объединения в основном контексте и частном контексте в многопоточном приложении CoreData

    Универсальное приложение появится в виде приложения iPhone в магазине приложений.

    iOS – deviceready не срабатывает через 5 секунд

    Как синхронизировать несколько запросов Alamofire

    iOS – кнопка входа в систему Google+ при входе в систему – должна ли она выйти из системы?

    Когда (void) dealloc вызывается в AppDelegate?

    Загрузка сохраненного изображения в iOS

    Зарегистрировать Cydia для push-уведомлений?

    Давайте будем гением компьютера.