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

Detaillierte Erklärung der Lösung des Bildschirmschwenkproblems in Android mit Runtime (Empfohlen)

Einleitung

Vielleicht haben Sie in der iOS-Programmierung oft mit dem Bildschirmschwenkproblem zu tun, zum Beispiel möchten Sie, dass bestimmte Seiten unterschiedliche Bildschirmschwenkungen durchführen, aber die vom System bereitgestellten Methoden sind globale Methoden des Navigationscontrollers und können nicht willkürlich diesen Bedarf erfüllen. Ein allgemeiner Lösungsansatz ist, UINavrgationViewController zu überlagern und die Methoden dieser Klasse neu zu schreiben. Obwohl dies ebenfalls das Problem löst, erzeugt der Überlagerungsprozess mindestens zwei zusätzliche Dateien und viel Code, was nicht unser Ziel ist. Unten werde ich eine tiefere Methode verwenden, um dieses Problem zu lösen.

Grundprinzip

Verändern Sie dynamisch die globale Methode von UINavrgationViewController, ersetzen Sie die von uns neu geschriebenen supportedInterfaceOrientations, shouldAutorotate Methoden und die Methoden des Navigationscontrollers.

Vorbereitung

Konfigurieren Sie die Projektunterstützungsrichtungen

Code-Implementierung

Schreiben Sie den folgenden Code in die viewDidLoad-Methode des Elternklasse aller Viewcontrollers, um die Bildschirnbildorientierung zu konfigurieren.

//Gewinnen Sie die Rotationsunterstützungs Methode des aktuellen Viewcontrollers.
Method selfMtihod = class_getInstanceMethod([self class], @selector(shouldAutorotate));
//Gewinnen Sie die Rotationsunterstützungs Methode des aktuellen Navigationscontrollers.
Method navr = class_getInstanceMethod([self.navigationController class], @selector(shouldAutorotate));
//Methode austauschen
method_exchangeImplementations(selfMethod, navr);
//Das gleiche gilt für die folgenden
Methode selfOrientation = class_getInstanceMethod([self class], @selector(supportedInterfaceOrientations));
Methode navrOrientation = class_getInstanceMethod([self.navigationController class], @selector(supportedInterfaceOrientations));
method_exchangeImplementations(selfOrientation, navrOrientation);

Verwendung

In der übergeordneten Klasse supportedInterfaceOrientations und shouldAutorotate überschreiben, um die Standardattribute der Bildschirmspiegelung zu kennzeichnen.

In jeder Unterklasse des zu kontrollierenden Controllers kann supportedInterfaceOrientations und shouldAutorotate überschrieben werden, um die Anforderungen an die Anzeigendirektion des angegebenen View Controllers zu erfüllen.

Die nachfolgend beschriebenen Methoden zur Lösung des Problems der Bildschirmspiegelung in Runtime wurden von mir vorgestellt. Ich hoffe, sie helfen Ihnen weiter. Wenn Sie Fragen haben, hinterlassen Sie bitte einen Kommentar, und ich werde mich umgehend um eine Antwort kümmern. Ich danke auch sehr für die Unterstützung unserer Leser für die Website "Rufen Sie nach dem Lehrbuch"!

Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet entnommen und gehört dem Urheberrechtsinhaber. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie Inhalte finden, die möglicherweise urheberrechtlich geschützt sind, senden Sie bitte eine E-Mail an: notice#w, um eine Beschwerde einzureichen und relevante Beweise bereitzustellen.3Anzeige: Der Inhalt dieses Artikels wurde aus dem Internet entnommen und gehört dem Urheberrechtsinhaber. Der Inhalt wurde von Internetnutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie Inhalte finden, die möglicherweise urheberrechtlich geschützt sind, senden Sie bitte eine E-Mail an: notice#w, um eine Beschwerde einzureichen und relevante Beweise bereitzustellen. Sobald nachgewiesen wird, dass der Inhalt urheberrechtlich geschützt ist, wird dieser umgehend von dieser Website gelöscht.

Elasticsearch-Tutorial