-
iOS - Project의 Storyboard 삭제하기Programming/iOS 2022. 3. 12. 02:20
안녕하세요 BeePeach입니다 :)
이번에 공부해볼 내용은 Project에서 storyboard file 삭제하는 방법입니다.
만약 코드로만 UI를 구성하려고하는데 main.storyboard를 삭제하고 싶은 경우가 있습니다.
그렇다고 무턱대로 storyboard 파일만 삭제하고 시뮬레이터를 실행하면 에러가 발생하게 됩니다.
그때 어떻게 삭제 해야하는지 한번 알아보도록 하겠습니다.
삭제하기
먼저 Main.storyboard를 Move to Trash로 삭제해줍니다.
이때 가끔 Remove Reference가 파란색 표시가 되어있다고 선택하시는 분들이 있는데 이렇게 삭제하게되면 Xcode에서만 삭제되고 실제로 Finder로 경로를 찾아가보면 파일은 그대로 남아있게됩니다.
그리고 LaunchScree.storyboard는 살려줍니다.
그 이유는 마지막에 설명드릴게요. 일단은 살려보내줍니다.
이렇게만하고 시뮬레이터를 실행하면 이런 에러가 발생합니다.
이 에러가 발생하는것은 plist에서 enter point로 Main.storyboard가 설정되어있기때문입니다.
그래서 앱이 실행될때 Main을 찾는데 없어서 이렇게 crash가 발생합니다.
Target -> Info -> Main storyboard file base name Key를 삭제해줍니다.
여기서 끝이 아니고 하나 더 삭제해줘야합니다.
그 다음 Application SceneManifest -> Scene COnfiguration -> Application Session Role -> Item 0 -> Storyboard Name 을 삭제시켜줍니다.
plist파일에서 enter point를 삭제했기때문에 이제 crash는 나지 않습니다.
하지만 검은색화면이 반겨주네요.
혹시나해서 rootView의 backgroundColor를 바꿔봤는데도 나타나지 않습니다.
이전에는 storyboard에 Initial View Controller로 설정된 VC의 class를 이용해서 화면을 구성했지만 지금은 어떤거로 시작해야할지 모르기 때문에 아무것도 나오지 않는것입니다.
그럼 이제 코드로 설정을 해주도록 하겠습니다.
SceneDelegate에서 window를 원하는 VC로 설정해주어야합니다.
UIWindow는 파라미터로 제공되는 UIWindowScene을 이용해서 생성합니다.
그 이후 저는 원래 존재하던 ViewController를 window의 rootViewController로 설정해주었습니다.
여기서 처음으로 나타날 VC를 설정해주면 됩니다.
그리고 꼭 makeKeyAndVisible() 메서드를 호출해주어야합니다.
그래야 이 window를 보여주고 같거나 낮은 레벨의 window들 중에 가장 앞에 배치합니다.
이제 시뮬레이터를 실행하면 우리가 원하는 화면이 나오는것을 확인할 수 있습니다.
Launch Screen은 삭제하지 않은 이유
그럼 왜 LaunchScreen은 삭제하지않고 살려보내줬는지 알아보겠습니다.
LaunchScreen.storyboard를 삭제해주고 plist로 가서 이번에는 Launch screen interface file base name Key를 삭제해보도록 하겠습니다.
엥? 그랬더니 이제 화면의 크기를 제대로 잡지 못합니다.
흡사 iPhone8처럼 되버렸네요.
그 이유는 앱이 실행되고 AppDelegate에 application(_:, didFinishLaunchingWithOptions:)이 호출되기 전에 LaunchScreen은 애플에서 제공하는 다양한 화면 크기에 대한 이미지를 제공합니다.
그래서 우리가 만든 앱이 다양한 화면에 알맞은 크기로 적용됩니다.
그런데 LaunchScreen을 삭제하면 이미지들을 제공하지 못하고 화면 크기를 맞추지 못하게 됩니다.
물론 LaunchScreen을 삭제한 뒤에 Target에 가서 각각 화면에 맞는 Image Set을 제공해주면 다시 제대로된 화면이 나옵니다.
하지만 그럴필요없이 LaunchScreen을 삭제하지 않는게 더 효율적이겠죠??
그래서 LaunchScreen은 그대로 두는게 좋습니다.
참고자료
728x90'Programming > iOS' 카테고리의 다른 글
iOS - Firebase 기본 설정하기 (0) 2022.03.16 iOS - SwiftUI를 이용해서 Preview 보기 (0) 2022.03.12 iOS - URLSession과 URLSessionTask (0) 2022.03.09 iOS - URL과 ATS (0) 2022.03.06 CI/CD - 입문하기 쉬운 Bitrise 사용해보기 (0) 2022.03.03