English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Введение
Возможно, многие из вас сталкивались с проблемами вращения экрана в разработке приложений iOS, например, когда хотелось бы, чтобы определенные страницы поддерживали различные направления вращения экрана, но методы, предоставляемые системой, являются глобальными методами навигационного контроллера, и их нельзя использовать для достижения этой цели свободно.Обычное решение - наследовать UINavrgationViewController и перезаписать соответствующие методы этого класса, что хотя и решает проблему, но при этом создает, по крайней мере, два дополнительных файла и много кода, что显然 не соответствует нашим ожиданиям.Ниже мы рассмотрим более底层ный способ решения этой проблемы.
Основные принципы
Динамически измените глобальный метод UINavrgationViewController, заменив наши собственные методы supportedInterfaceOrientations, shouldAutorotate и методы объекта навигационного контроллера.
Подготовка
Конфигурация поддерживаемых направлений
Реализация кода
Напишите следующий метод в метод viewDidLoad родительского класса всех视图 контроллеров, чтобы настроить направление вращения экрана.
//получение метода поддержки вращения текущего视图 контроллера Метод selfMtihod = class_getInstanceMethod([self class], @selector(shouldAutorotate)); //получение метода поддержки вращения текущего навигационного контроллера Метод navr = class_getInstanceMethod([self.navigationController class], @selector(shouldAutorotate)); //обмен методами method_exchangeImplementations(selfMtihod, navr); //Таким же образом продолжается Метод selfOrientation = class_getInstanceMethod([self class], @selector(supportedInterfaceOrientations)); Метод navrOrientation = class_getInstanceMethod([self.navigationController class], @selector(supportedInterfaceOrientations)); method_exchangeImplementations(selfOrientation, navrOrientation);
Способ использования
В родительском классе переписать supportedInterfaceOrientations, shouldAutorotate, чтобы указать на свойства вращения экрана по умолчанию.
В каждом последующем подклассе контроллера можно переопределить supportedInterfaceOrientations, shouldAutorotate методы, чтобы выполнить потребности в определении orientations视图 контроллера.
Указанные выше методы по решению проблемы вращения экрана,介绍的Runtime, надеюсь, будет полезно для вас, если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий, я постараюсь ответить вам вовремя, и я очень благодарен вам за поддержку сайта呐喊 учебника!
Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему владельцу. Контент предоставлен пользователями Интернета, самостоятельно загружен, сайт не обладает правами собственности, не underwent редактирование, и не несет ответственности за соответствующие юридические вопросы. Если вы обнаружите контент,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для сообщения о нарушении, и предоставьте соответствующие доказательства. Если обнаружено, сайт немедленно удаляет涉嫌侵权的内容。