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

Android에서 런타임 솔루션을 통해 화면 회전 문제를 해결하는 방법에 대한 자세한 설명(추천)

서론

iOS 프로그램 개발 중에 스크린 회전 문제를 자주 만나는 분들이 많을 것입니다. 예를 들어, 특정 페이지가 다른 스크린 회전을 원하지만, 시스템이 제공하는 메서드는 네비게이션 컨트롤러의 전역 메서드라서, 이러한 요구를 자유롭게 만족시키기 어렵습니다. 일반적인 해결책은 UINavrgationViewController을 상속받아 해당 클래스의 관련 메서드를 재정의하는 것입니다. 이렇게 하면 문제를 해결할 수 있지만, 재정의 과정에서 최소한 두 개의 추가 파일과 많은 코드가 생성되므로, 이는 우리가 원하는 것이 아닙니다. 아래는 이 문제를 해결하기 위해 더 깊은 방법을 사용합니다.

기본 원리

UINavrgationViewController의 전역 메서드를 동적으로 변경하여, 우리가 재정의한 supportedInterfaceOrientations, shouldAutorotate 메서드와 네비게이션 컨트롤러 객체의 메서드를 대체하세요.

준비 작업

프로젝트 지원 방향 설정

코드 구현

다음 메서드를 모든 뷰 컨트롤러의 부모 클래스의 viewDidLoad 메서드에 작성하면, 스크린 회전 방향 설정이 완료됩니다.

//현재 뷰 컨트롤러의 회전 지원 메서드를 얻습니다
Method selfMtihod = class_getInstanceMethod([self class], @selector(shouldAutorotate));
//현재 네비게이션 컨트롤러의 회전 지원 메서드를 얻습니다
Method navr = class_getInstanceMethod([self.navigationController class], @selector(shouldAutorotate));
//메서드 교환
method_exchangeImplementations(selfMtihod, navr);
//이하 동일
Method selfOrientation = class_getInstanceMethod([self class], @selector(supportedInterfaceOrientations));
Method navrOrientation = class_getInstanceMethod([self.navigationController class], @selector(supportedInterfaceOrientations));
method_exchangeImplementations(selfOrientation, navrOrientation);

사용 방법

위의 부모 클래스에서 supportedInterfaceOrientations, shouldAutorotate를 재정의하여 기본적인 화면 회전 관련 속성을 나타냅니다.

이후의 각 해당 컨트롤러의 서브 클래스에서 supportedInterfaceOrientations, shouldAutorotate 메서드를 재정의하여 특정 뷰 컨트롤러 방향의 요구를 충족할 수 있습니다.

위에서 설명한 것은 편집자가 여러분에게 소개한 Runtime이 화면 회전 문제를 해결하는 방법의 자세한 설명입니다. 여러분이 어떤 질문이나 의문이 있으시면, 편집자에게 댓글을 남겨 주시면 좋습니다. 편집자는 즉시 여러분에게 답변을 드릴 것입니다. 또한, 얼라우 튜토리얼 웹사이트에 대한 여러분의 지지에 깊이 감사드립니다!

성명: 본 문서는 인터넷에서 가져온 내용으로, 저작권은 저작자에게 있으며, 인터넷 사용자가 자발적으로 기여하고 자체로 업로드한 내용으로, 이 사이트는 소유권을 가지지 않으며, 인공 편집 처리를 하지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 문제가 있음을 발견하시면, notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com(이메일을 보내는 경우, #을 @으로 변경하십시오. 기만을 신고하고 관련 증거를 제공하시면, 해당 사이트는 즉시 기만 내용을 삭제할 것입니다.

좋아하는 것