iOS 앱을 개발하다 특정 화면에서 단말기 회전에 따른 화면 회전을 고려한다면 다음의 내용을 확인해 보자!
1. 먼저 iOS 앱의 화면 기본 설정이 어떻게 적용되는지 알아보자!
- 우선적으로 앱의 경우 info.plist의 화면 회전 설정을 먼저 체크하게된다.
- 아래 Xcode Target -> General -> Deployment Info에서 화면 회전에 대한 설정이 가능하다.
-- Upside Down의 경우 폰을 180도 뒤집은 경우 화면 회전을 뜻하나 일부 단말기에서는 해당 회전이 지원되지 않을 수 있다.
(노치 디자인 단말의 경우 Upside Down이 지원되지 않을 가능성이 높다)
- 위의 Device Orientation에 Landscape Left, Landscape Right가 휴대전화 가로로 보기시 화면 회전을 지원하는 설정이며 해당 값이 체크 되어 있지 않더라도 아래 함수에 다음과 같이 .all로 명시가 되어 있다면 화면 회전을 지원하게 된다.
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
return [.all]
}
- 즉, 첫번째로 info.plist의 회전값을 참고하나 두번째 application(_:supportedInterfaceOrientationsFor:) 함수가 정의 되어 있다면 application(_:supportedInterfaceOrientationsFor:) 설정 값을 우선적으로 사용하게 된다.
2. 그럼 특정 뷰를 회전시키는 방법을 알아보자!
- 여기서는 application(_:supportedInterfaceOrientationsFor:) 함수를 이용하는 방법으로 진행한다.
// 화면 회전을 제어할 변수 선언
var shouldSupportAllOrientation = false
// .... 생략 ....
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
// 화면 회전 변수 값에 따라 화면 회전 활성화 지정
if (shouldSupportAllOrientation){
return [.all]
} else {
return [.portrait, .portraitUpsideDown]
}
}
- 화면을 회전 하고자 하는 ViewController에 아래와 같이 설정한다.
// AppDelegate에서 정의한 화면 회전 변수에 접근할 수 있도록 AppDelegate 변수 선언
let appDelegate = UIApplication.shared.delegate as! AppDelegate
// .... 생략 ....
override func viewWillAppear(_ animated: Bool) {
// 화면이 보일때 마다 화면 회전 변수 활성화
appDelegate.shouldSupportAllOrientation = true
super.viewWillAppear(animated)
}
override func viewWillDisappear(_ animated: Bool) {
// 화면이 가릴때 마다 화면 회전 변수 비활성화
appDelegate.shouldSupportAllOrientation = false
super.viewWillDisappear(animated)
}
'개발' 카테고리의 다른 글
Swift WKWebView 입력폼에서 더 빠른 로그인을 위한 ID, PW 자동 완성 알아보기! (0) | 2021.10.14 |
---|---|
Swift TextField를 이용하여 더 빠른 로그인을 위한 ID, PW 자동 완성 알아보기! (0) | 2021.10.14 |
Swift TableView 에서 특정 Cell 위치로 이동하는 방법!? (0) | 2021.07.08 |
iOS Swift를 이용하여 화면 회전에 대한 이벤트 받기 (2) | 2021.06.14 |
iOS WKWebView 비디오 인라인 재생 시켜 보기! (0) | 2021.04.20 |