Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
반응형
Archives
Today
Total
관리 메뉴

슈프림 블로그

[Xcode] 프로젝트에서 Storyboard와 LaunchScreen 제거하기??? 본문

iOS_Swift

[Xcode] 프로젝트에서 Storyboard와 LaunchScreen 제거하기???

_슈프림 2023. 11. 23. 18:13
728x90

Storyboard 제거하는 방법

 

1. Main.storyboard 파일을 제거

Move To Trash를 통해 프로젝트 내에서 완전히 제거해주면 된다.

 

2. Info.plist 파일의 Storyboard Name 제거

중간에 있는 - 버튼을 눌러서 제거해주면 된다.

 

3. Target Info에서 Main storyboard file base name 제거

마찬가지로 - 버튼을 눌러서 제거해주면 된다.

 

3. AppDelegate, SceneDelegate에서 디폴트 화면을 설정

 

AppDelegate는 앱의 라이프사이클을 관리하는 녀석이고

SceneDelegate는 iOS 13부터 도입된 Scene 개념을 다루는 녀석이다.

두가지 모두 앱(또는 Scene)이 실행되고 동작하고 종료되는 과정에서 필요한 코드들을 작성하는 부분이라고 이해하면 된다.

앱이 실행되자마자 처음 실행되는 화면을 지정하는 것도 여기서 처리해주면 된다.

 

자세한 차이점은 > Managing Your App's Life Cycle

 

Deployment Target이 iOS 13 미만이라면 AppDelegate, SceneDelegate 모두 수정해야 하고

iOS 13 이상이라면 SceneDelegate만 수정해주어도 무방하다.

 

SceneDelegatescene(\_ : willConnectTo: options:) 함수를 다음과 같이 수정한다.

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    guard let windowScene = (scene as? UIWindowScene) else { return }

    let window = UIWindow(windowScene: windowScene)
    window.rootViewController = ViewController()
    window.makeKeyAndVisible()
    self.window = window
}

 

AppDelegate에서는 application(_: didFinishLaunchingWithOptions:) 함수를 다음과 같이 수정한다.

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    if #available(iOS 13.0, *) { 
        return true
    }

    window = UIWindow()
    window?.rootViewController = ViewController() 
    window?.makeKeyAndVisible()
    return true
}

 


LaunchScreen 제거하는 방법

사실, Specifying your app's launch screen 내용을 살펴보면 첫 줄부터

"모든 iOS 앱은 앱이 실행되는 동안 Launch Screen을 제공해야 한다" 고 명시되어있다.

특별한 이유가 없다면 제거하지 않는 것이 좋다.

 

만약 다음과 같이 LaunchScreen을 제거한다면 문제가 발생한다.

  1. LaunchScreen.storyboard 파일 제거
  2. Target Info에 있는 Launch screen interface file base name 제거
  3. 앱 실행 시 화면이 작은 화면으로 노출된다.‼️

 

이렇게 화면이 줄어드는 이유는

해당 key 값 (Launch screen interface file base name)이 없으면

앱 실행 타이밍에 어떻게 화면 구성을 해야할 지 알 수 없으므로

하위 디바이스 버전에서 호환되는 스크린 사이즈로 제공된다고 한다.

 

실제로 Debug View Hierarchy를 찍어보면 window 사이즈가 320x480 로,

iPhone 4 해상도와 동일한 것을 확인 할 수 있다.

 

실수로 제거했다면 Specifying your app's launch screen 에 나와있는 대로 따라하면 복구할 수 있다.

반응형
Comments