필자가 관리하는 앱에서 골치아픈 문제가 생겼다.
분명 Device Orientation을 ViewController.swift단에서 Portrait으로 제한했는데
앱을 시작할 때 옆으로 뉘어서 시작하면 landscape으로 시작되는게 아닌가...
구글링을 해보니 info.plist에서 [Supported interface orientations] 설정으로 landscape를 지워야 한다고 한다.
그런데 이렇게 하면 앱안에서 landscape로 보고 싶을 때 보지 못한다:(
(잠깐 필자는 Device Orientation이 뭔지 몰랐으니 짚고 넘어가면
Portrait은 초상화라는 뜻이고 초상화처럼 세로로 세웠을 때 상태를 말한다.
Landscape는 풍경화라는 뜻이고 풍경화처럼 가로로 뉘었을 때 상태를 말한다.)
필자는 하루 온종일 삽을 퍼서야 해결방법을 찾았다.
어느 성령 충만하신 한국인 분이 잘 정리해 놓으셨다. (한국어를 찾느라 삽을 푼걸지도?)
1.Launch Screen을 Portrait 상태에서만 시작하려면 위와 같이 Info.plist 에서 [Supported interface orientations] 설정으로 landscape를 지우고 Portrait만 남겨야한다.
(Target>General>Deployment Info에서 [Device Orientation]을 설정해줘도 된다.)
2.여기서 중요한점!!! AppDelegate.swift에서 앱에서 허용할 orientation을 선언해 줘야한다.
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
return [.portrait,.landscapeRight]
}
3.이제 ViewController.swift(View)에서 허용할 orientation을 선언해주면 끝.
override open var shouldAutorotate: Bool {
return canRotate
}
override open var supportedInterfaceOrientations: UIInterfaceOrientationMask {
return .portrait
}
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
return .portrait
}
ViewController마다 허용할 orientation을 모두 정의해줘야하는게 좀 짜치긴하다.
그래도 방법을 찾았으니 Mission Clear~
더 좋은 방법을 아시는 분은 피드백주시면 감사드리겠습니다.
'iOS 한번 개발해보자 > related to UIKit' 카테고리의 다른 글
[iOS][UIKit]Watermark 적용하기 (0) | 2022.07.25 |
---|---|
[iOS][UIKit]Firebase로 Push Message 보내기 (0) | 2022.06.29 |
[iOS][UIKit]Network 상태 확인하기 (0) | 2022.06.28 |
[iOS][UIKit]Background에서도 죽지 않게 실행시키기 (0) | 2022.06.28 |
댓글