[iOS] 프로젝트에서 Main Storyboard 삭제해 보기

zhilly·2023년 4월 4일
0

iOS

목록 보기
1/5

UI를 구성하는 방법

iOS를 개발하면서 UI를 구성하는 방법엔 크게 두가지가 있습니다.

  1. 스토리보드를 사용해 UI를 구현하기
  2. 코드로 UI를 구현하기

각 방법마다 장단점이 있습니다.

스토리보드를 이용한다면?

장점

  • UI를 한 눈에 쉽게 확인하며 구현할 수 있습니다.
  • UI 요소에 어떤 옵션이 적용되어있는지 쉽게 볼 수 있습니다.

단점

  • 아무래도 인터페이스 빌더를 사용하기 때문에 XCode가 메모리를 많이 사용하게 됩니다.
  • 스토리보드 파일에 많은 Scene들이 존재하게 되면 로딩이 많이 걸리는 단점이 있습니다.
  • 겪어보진 못했지만 협업시 스토리보드 충돌이 있어날 수도 있습니다.

코드를 이용한다면?

장점

  • 인터페이스 빌더를 사용하지 않기 때문에 XCode가 가벼워집니다.
  • 협업시 충돌이 줄어들게 됩니다.
  • 재사용성이 높은 코드를 작성할 수 있게 됩니다.

단점

  • UI를 한 눈에 파악하기 어렵습니다.
  • UI 요소에 어떤 옵션이 적용되어있는지 확인하기 어렵습니다.
  • NSLayoutConstraint를 통해 AutoLayout을 하나하나 작성해주어야 합니다.

코드로 구현해보려면?

먼저 Main Storyboard를 삭제하는 것 부터 시작해야겠네요.
일단 새로운 프로젝트를 하나 만들었다고 가정하고 해보겠습니다.

1. Main.storyboard 삭제하기

과감하게 Move to Trash 버튼을 눌러 삭제합니다.

  • Remove Reference 버튼은 완벽하게 삭제가 되지 않습니다. (Xcode상에서만 안보이게 되고 실제로 Finder를 통해 확인해보면 그대로 파일이 남아있습니다.)

2. 프로젝트 설정에서 옵션 수정하기


Main 이라고 써져있는 부분을 더블 클릭하면 수정할 수 있습니다.
여기서 Main 키워드를 지워줍니다.

3. Info.plist에서 옵션 수정하기

마찬가지로 Info.plist 파일도 Storyboard 관련 옵션이 있는데요.
여기서는 Storyboar Name 옵션을 통째로 날려주셔야 합니다.

이렇게요!

4. SceneDelegate 수정하기

SceneDelegate에서 보여주고 싶은 ViewController를 Window로 설정을 해주어야 합니다.

//  SceneDelegate.swift

import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?

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

중요한 점은 makeKeyAndVisible() 를 꼭 해주어야합니다.
공식문서에 따르면 같은 수준 이하의 다른 window 보다 맨 앞에 창을 배치하는 메서드라고 합니다.

5. 완성

간단하게 ViewController에 있는 view의 backgroundColor만 변경해주고 실행시켜 보겠습니다.

짜잔!

profile
고민에 진심인편 새로운 블로그 https://zhilly11.tistory.com

0개의 댓글