Implementierung des von iOS angegebenen horizontalen Seitenbildschirms

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.

Guess you like

Origin blog.csdn.net/ForeverMyheart/article/details/114017598