Xcode11에서 프로젝트를 생성하면 iOS13 이후에서 사용할 수 있는 타입을 사용하기 때문에 iOS 13 이전 버전에서도 동작하는 앱을 작성하려면 약간의 조작을 해야 한다.
Xcode11에서 프로젝트를 생성하는 과정에서 스토리보드와 SwiftUI 선택할 수 있다. SwiftUI는 iOS 13 이후부터 사용할 수 있으므로 스토리보드를 선택한다.
프로젝트를 생성하고 Deployment info에서 동작 버전을 설정할 수 있다.
최소 동작 버전을 iOS13 이전으로 낮추면 다음과 같은 에러가 발생한다.
UIScene, UISceneDelegate 등이 iOS13에 추가된 타입이다 보니 에러가 발생한다. @available 를 사용하라는 권고?가 있지만 다 지워버리도록 하자!
프로젝트 내비게이터에서 SceneDelegate.swift 파일 삭제
AppDelegate.swift 를 다음과 같이 편집한다.
- UIScene에 관련된 코드 제거
- window 프로퍼티 추가
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
// 추가!
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
// 아래 제거
// MARK: UISceneSession Lifecycle
}
Info.plist 에서 Scene에 관련된 항목을 삭제한다.
이제 iOS13 이전 버전에서도 에러 없이 동작한다.
과거 버전의 시뮬레이터를 설치하려면 Xcode의 Preferences의 Components 메뉴에서 필요한 버전의 시뮬레이터를 다운로드한다.
시뮬레이터 다운로드를 마치면 Window -> Devices and Simulators 에서 다운로드한 버전에 맞춰서 시뮬레이터 설치한다.
이제 iOS13 이전 버전에서도 동작한다.