No! Storyboard 프로젝트 환경 구축하기

박형석·2022년 1월 11일
0

개발

목록 보기
4/4
post-thumbnail

Storyboard가 없는게 유용할까?

Storyboard를 사용하는건 정말 별로일까...? 나의 대답은 "장단점이 있습니다."이다.

Storyboard를 사용하면, View에 관련한 코드들을 ViewController에서 많이 걷어낼 수 있다. 가시적으로 뷰를 제작하니 훨씬 접근성도 좋고, Storyboard의 reference를 나누면 협업에도 큰 문제가 없다. 개인 프로젝트에 한해서는 코드로 뷰를 일일이 제작하는 것보다 개발 속도가 빠르다. 개인적으로 스토리보드와 코드를 필요한 곳에 적절하게 사용하는 것이 가장 좋았다.

하지만 치명적인 단점이 몇 가지 있는데, 첫 번째는 코드 리뷰가 어렵다는 점이다. Storyboard를 수정한 뒤 PR을 날리면 정말 알아보기 힘든 xml파일의 형태로 보여진다. 협업에 큰 문제가 없다고 했지만, 코드리뷰가 필요한 그룹에서는 문제가 크다. 두 번째는 reference 단위로 작업하지 않을시 git conflict가 자주 난다. 그냥 Storyboard에 들어가는 것만으로도 값이 달라지는 경우가 있다. 이런 경우는 일일이 충돌난 곳을 고쳐줘야 한다.

이런저런 이유로 Storyboard없이 코드로만 진행되는 프로젝트 환경 구축 방법을 알고 익숙해져야 한다. 팁 아닌 팁이 있다면 SnapKit과 Then, SwiftUI의 Preview와 연결해서 사용하면 코드로 뷰를 그리는 것도 어려운 일은 아니다.

Main.storyboard 삭제


왼쪽의 네이게이터에서 Main Storyboard를 삭제한다.

Main Interface 삭제


Project - Target - General- Development Info에서 Main Interface에서 Main을 삭제한다.
여기서 삭제하면, info.plist의 Main storyboard file base name도 알아서 삭제된다.

Info.plist에서 Storyboard Name 삭제


위의 Storyboard Name을 삭제해주면 기본적인 세팅은 끝난다.
이제 Window의 RootView만 설정하면 코드로 첫 화면이 뜬다.

Window Root ViewController 설정

// SceneDelegate

var window: UIWindow?

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

iOS 13 이상에서는 SceneDelegate에서 Window를 관리하기 때문에 이곳에 구현했고 AppDelegate에서 구현해도 된다. 위 코드는 나름 Best Practice인 것 같으니.. 가져다 쓰자.

profile
IOS Developer

0개의 댓글

관련 채용 정보