UIKit에서 Storyboard 없이 코드로 UI 구현하기

Jungwon Lee·2023년 5월 22일
0

처음 iOS 공부를 시작할 때에는 대부분 Storyboard로 UI를 구현하는 일이 많지만, 아무래도 Storyboard 만으로는 한계가 있고, 다른 사람들과 같이 협업할 때에는 코드 베이스로 구현하는 것이 더 편리할 수 있다.

그래서 Storyboard를 제거하고, 기본적으로 생성되는 ViewController의 view를 표시하는 방법에 대해 공유하고자 한다.



1. 프로젝트 생성


참고로 프로젝트 생성시 Interfae 항목을 SwiftUI로 설정하면 Storyboard 없이 선언적으로 UI를 구현할 수 있다.

(하지만 SwiftUI로 구현할 것이었으면 당신은 이 글을 찾으러 오지 않았을 것이다.)

일단은 Storyboard를 선택하고 프로젝트를 생성해주자.



2. Main.storyboard 파일 삭제

Main.storybaord 파일을 우클릭 한 다음 Delete를 눌러 삭제한다.



3. Info.plist 설정 변경


Info.plsit는 Information Property List 의 줄임말로, 앱 전체적인 메타데이터를 설정할 수 있는 Key-Value로 이루어진 XML 파일이다.
Key 부분에 닫혀 있는 속성을 계속 열다보면

Information Property List
- Application Scene Manifest
	- Scene Configuration
		- Application Session Role
			- item 0 (Default Configuration)
				- Storyboard Name

위와 같은 경로에 Storyboard Name이 존재하는 것을 확인할 수 있다. 여기서 + 버튼 옆의 - 버튼을 눌러 속성을 삭제해주도록 하자.
(Value 값인 Main만 지우면 안되고 꼭 - 버튼으로 항목 전체를 삭제해야 한다.)



4. 프로젝트 Targets 설정

끝이라고 생각하겠지만 아직 한 가지 설정이 더 남아있다. xcodeproj 파일 Targets 부분의 Build Settings를 눌러보면, UIKit Main Storyboard File Base Name이 Main으로 설정되어 있는 것을 확인할 수 있다. Main으로 되어있는 값을 지우면 된다.



5. Scene Delegate 설정

iOS 13부터 SceneDelegate 라는 객체가 새롭게 등장하였고, Scene이라는 개념이 소개되었다. Scene은 쉽게 말해 앱의 UI 인스턴스라고 얘기할 수 있는데, 아이패드의 메모앱을 생각해보면 Split View를 통해 멀티태스킹이 가능하다.

이처럼 하나의 앱에서도 여러 Scene이 존재할 수 있고, 이 각각의 Scene의 Lifecycle을 관리하는 것이 바로 UISceneDelegate이다.
더 궁금하다면, UISceneDelegate Apple 공식 문서




다시 돌아와서, 처음 앱이 실행될 때 보여지는 window에 대한 설정을 다음과 같이 해주면 된다.

여기서는 ViewControllerrootViewController로 설정해주었기 때문에 앱이 실행됐을 때 ViewController의 뷰가 보여야 한다.

이때 window?.makeKeyAndVisible()을 호출하는 것을 잊지 말자!
이 메소드는 기본적으로 제공되는 window를 key window로 지정해주는 작업이다. Storyboard가 없다면 이 역시 직접 설정해줘야 한다.



6. 확인

그럼 의도한대로 ViewController의 view가 잘 보여지는지 확인하기 위해 view의 배경색을 민트색으로 바꿔보겠다.

👍🏻

Reference
https://developer.apple.com/documentation/uikit/uiscenedelegate
https://developer.apple.com/documentation/uikit/uiwindow/1621601-makekeyandvisible
https://ios-development.tistory.com/72

profile
안녕하세요

0개의 댓글