일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Timer
- 서체관리자
- weatherKit
- App Store Connect
- Xcode
- font book
- 영문 개인정보처리방침
- AnyObject
- UIAlertAction
- SwiftUI Boolean 값
- CLLocationManagerDelegate
- UICollectionViewFlowLayout
- Required Reason API
- swift
- dispatchsource
- xcode로 날씨앱 만들기
- MKMapItem
- WeatherManager
- Protocol
- 러닝타이머
- 클로저의 캡슐화
- 러닝기록앱
- 단일 책임원칙
- 한국어 개인정보처리방침
- weak var
- CoreLocation
- RunningTimer
- Startign Assignments
- MKMapViewDelegate
- addannotation
Archives
- Today
- Total
VesselWheel
programmatic UI 프로젝트 구성하기(feat. xcode) 본문
UIKit
Code로 쓰는 UI
장점
- 유지보수 용이성: 코드로 UI를 작성하면 코드의 버전 관리 및 수정이 용이하며, 코드베이스를 유지 비용이 적습니다. Git과 같은 버전 관리 도구를 활용하여 협업 시 코드 변경을 효과적으로 관리할 수 있습니다.
- 동적인 UI 작성: 코드로 UI를 구성하면 런타임에 동적으로 UI를 변경하거나 조작하기 용이하며, 복잡한 UI 로직을 더 쉽게 구현할 수 있습니다. (버튼에 따른 UI 이동 등을 구현하기 용이합니다.)
- 분업 용이성: 개발자가 각자의 역할(디자인 구현, 비즈니스 로직 구현 등)에 집중할 수 있으며, 작업 분담이 용이합니다.
단점
- 시각화 어려움: UI의 구성 요소를 코드로 작성하면 디자인을 미리 시각적으로 확인하기 어렵습니다. 디자이너가 실시간으로 디자인을 확인하기 어려울 수 있습니다.
- 학습 곡선: 코드로 UI를 작성하는 데는 시간이 걸리며, 초기에는 Storyboard보다 학습 곡선이 높을 수 있습니다.
1. 프로젝트를 storyboard로 생성
2. 네비게이션탭에서 스토리보드 삭제
3. Info 탭에서 [Main storyboard file base name] 삭제
4. Application Scene Manifest에서 화살표를 통해 하위로 내려가서, [storyboard name] 삭제
5. SceneDelegate에서 willConnectTo을 아래와 같이 수정
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
// rootViewController 설정
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
}
해석
- func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions): 이 메소드는 앱이 시작될 때, 즉 새로운 UIScene 세션을 생성하려고 할 때 호출됩니다.
- guard let windowScene = (scene as? UIWindowScene) else { return }: 이 코드는 scene을 UIWindowScene으로 캐스팅하려고 시도합니다. 만약 캐스팅에 실패하면, 즉 scene이 UIWindowScene 타입이 아니라면, 메소드가 종료됩니다.
- window = UIWindow(windowScene: windowScene): 여기서 window 인스턴스를 생성하고 현재의 windowScene을 이용하여 초기화합니다.
- window?.rootViewController = ViewController(): rootViewController는 앱의 첫 화면을 결정합니다. 여기서는 ViewController()를 생성하여 첫 화면으로 설정하고 있습니다.
- window?.makeKeyAndVisible(): 이 메소드를 호출하면, window가 활성화되고 사용자에게 보이게 됩니다.
makeKeyAndVisible() 관련 참고 블로그 & 공식문서
https://ios-development.tistory.com/314
https://developer.apple.com/documentation/uikit/uiwindow/1621610-makekey
'Xcode Study' 카테고리의 다른 글
programmatically NavigationController 만들기(feat. NavigationItem, toolbar, UINavigationControllerDelegate) (1) | 2024.01.31 |
---|---|
programmatically TabBarController 만들기 (1) | 2024.01.31 |
xcode에서 동영상 재생 구현하기(feat. AVKit in CodeBase) (0) | 2024.01.25 |
iOS 아키텍처 패턴 이해하기(MVC, MVVM) (0) | 2024.01.23 |
Left Constraint 와 Leading Constraint 의 차이 (0) | 2024.01.23 |