iOS 지정 페이지 가로 화면 구현

이 기능을 구현하기 위해 인터넷에서 여러 기사를 읽어보니 기본적으로는 같다.

첫 번째 단계는 Appdelegate에서 다음 작업을 수행하는 것입니다.

-(UIInterfaceOrientationMask)응용 프로그램:(UIApplication *)응용 프로그램 지원InterfaceOrientationsForWindow:(UIWindow *)window {

    if ( self .allowRotation) {//allowRotation 속성이 설정되어 있으면 가로 화면 지원

        UIInterfaceOrientationMaskLandscapeRight 반환 ;

    }

    return UIInterfaceOrientationMaskPortrait;//기본적으로 가로 화면은 전역적으로 지원되지 않습니다.

}

두 번째 단계는 다운로드한 코드를 가로 화면이 필요한 페이지에 작성하는 것입니다.

-( void )viewWillAppear:( BOOL )애니메이션{

    [ super viewWillAppear:animated];

[ 자기 전체 화면 시작];

}

-( void )viewWillDisappear:( BOOL )애니메이션{

    [ super viewWillDisappear:animated];

  [ self endFullScreen];

}

//전체화면 진입

-( 무효 ) 전체 화면 시작

{

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] 델리게이트];

    appDelegate.allowRotation = ;

}

// 전체 화면 종료

-( 무효 )endFullScreen

{

    

    

    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] 델리게이트];

    appDelegate.allowRotation = 아니요 ;

 

// // 강제 수정:

    if ([[UIDevice currentDevice] respondsToSelector: @selector (setOrientation:)]) {

        SEL 선택기 = NSSelectorFromString(@"setOrientation:");

        NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];

        [호출 setSelector:선택기];

        [호출 setTarget:[UIDevice 현재 장치]];

        int val =UIInterfaceOrientationPortrait;

        [호출 setArgument:&val atIndex:2];

        [호출 호출];

    }

}

 

이렇게 될줄 알았는데 실행중에 크래시가 날줄은 몰랐네요 크래시 정보는 다음과 같습니다.

'UIApplicationInvalidInterfaceOrientation', 이유: '지원되는 방향에는 응용 프로그램과 공통된 방향이 없으며 [ZDFullScreenController shouldAutorotate]가 YES를 반환합니다.'

마지막으로, 이 충돌의 원인은 - ( BOOL )shouldAutorotate였습니다. 이 방법 시스템의 기본값은 YES입니다. NO로 변경하면 됩니다.

Supongo que te gusta

Origin blog.csdn.net/ForeverMyheart/article/details/114017598
Recomendado
Clasificación