Um diese Funktion zu realisieren, habe ich mehrere Artikel im Internet gelesen und festgestellt, dass sie im Grunde gleich sind.
Der erste Schritt besteht darin, die folgenden Operationen in Appdelegate auszuführen:
-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
if ( self .allowRotation) {//Wenn die Eigenschaft allowRotation gesetzt ist, wird der horizontale Bildschirm unterstützt
return UIInterfaceOrientationMaskLandscapeRight;
}
return UIInterfaceOrientationMaskPortrait;//Standardmäßig wird der horizontale Bildschirm nicht global unterstützt
}
Der zweite Schritt besteht darin, den heruntergeladenen Code auf die Seite zu schreiben, die einen horizontalen Bildschirm benötigt
-( void )viewWillAppear:( BOOL )animated{
[ superviewWillAppear :animated];
[ self begainFullScreen];
}
-( void )viewWillDisappear:( BOOL )animated{
[ super viewWillDisappear:animiert];
[ self endFullScreen];
}
//Vollbildmodus aktivieren
-( void )begainFullScreen
{
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] Delegat];
appDelegate.allowRotation = JA ;
}
// Vollbild beenden
-( void )endFullScreen
{
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] Delegat];
appDelegate.allowRotation = NEIN ;
// // Zwangskorrektur:
if ([[UIDevice currentDevice] respondsToSelector: @selector (setOrientation:)]) {
SEL -Selektor = NSSelectorFromString(@"setOrientation:");
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];
[Aufruf setSelector:selector];
[Aufruf setTarget:[UIDevice aktuellesGerät]];
int val =UIInterfaceOrientationPortrait;
[Aufruf setArgument:&val atIndex:2];
[Aufruf aufrufen];
}
}
Ich dachte, es würde so gemacht werden, aber ich hatte nicht erwartet, dass es abstürzt, wenn es läuft. Die Absturzinformationen lauten wie folgt:
„UIApplicationInvalidInterfaceOrientation“, Grund: „Unterstützte Ausrichtungen haben keine gemeinsame Ausrichtung mit der Anwendung, und [ZDFullScreenController shouldAutorotate] gibt YES zurück.“
Schließlich wurde festgestellt, dass der Grund für diesen Absturz war - ( BOOL )shouldAutorotate Diese Methode ist standardmäßig auf JA eingestellt, ändern Sie sie einfach auf NEIN.