안녕하세요
Xcode에서 프로젝트를 새로 생성한 후 DeploymentTarget을 iOS13이하로 설정한다면 iOS12까지는 대부분 하나의 앱에 하나의 window였지만 iOS 13부터는 window의 개념이 scene으로 대체되면서 scene을 사용하기 때문에 따로 설정을 해줘야합니다. 이러한 설정을 어떻게 해야 하는지에 대해서 알아보겠습니다.
iOS Deployment Target이란?
지원하는 최소 OS지원 버전이라고 생각할 수 있습니다.
DepolymentTarget은 PROJECT와 TARGETS 각각 설정이 가능합니다.
TARGETS가 PROJECT를 OVERRIDE를 하고 두 버전이 다르다면 TARGETS를 기준으로 최소버전이 설정됩니다.
첫번째 방법 : Scene관련부분들을 모두 삭제하는 방법
var window: UIWindow?
두번째 방법 : iOS13미만과 이상인 경우 분기처리하는 방법
@available
프로젝트 첫 생성시 Xcode는 앱의 최소 버전을 13버전 이상으로 셋팅합니다.
최소 버전을 12 이하로 설정하려면 몇가지를 수정해줘야 합니다.
@available(iOS 13.0, *)
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
...
}
// MARK: UISceneSession Lifecycle
@available(iOS 13.0, *)
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
...
}
@available(iOS 13.0, *)
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
...
}
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
}
참고링크