English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Подробное объяснение решения проблемы вращения экрана в Android с помощью Runtime (рекомендуется)

Введение

Возможно, многие из вас сталкивались с проблемами вращения экрана в разработке приложений 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 (во время отправки письма, пожалуйста, замените # на @) для сообщения о нарушении, и предоставьте соответствующие доказательства. Если обнаружено, сайт немедленно удаляет涉嫌侵权的内容。

Вам может понравиться