본문 바로가기
iOS 한번 개발해보자/related to UIKit

[iOS][UIKit]LaunchScreen만 Portrait으로 고정하기

by 임간디 2022. 6. 29.

필자가 관리하는 앱에서 골치아픈 문제가 생겼다.

분명 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~

 

더 좋은 방법을 아시는 분은 피드백주시면 감사드리겠습니다.

댓글