UIkit - wirte by Bbell
Cocoa Touch
코코아 프레임워크는 iOS, macOS 등과 같이 Apple 운영체제용 어플리케이션을 구현할 때 사용하는 프레임워크이다.
이 프레임워크 중에서, 터치와 관련된 어플리케이션을 개발할 때 사용하는 프레임워크가 바로 코코아 터치 프레임워크이다.
코코아 터치 프레임워크는 ios 개발환경을 구축하기 위한 최상위 프레임워크라고 할 수 있다.
일반적으로 우리가 iOS 개발을 위해 언어에서 상속하여 사용하는 클래스 객체들이 대부분 소속되어 있다.
UIkit가 코코아 터치 프레임워크에 속한다.
UIKit(User Interface Kit)
IOS 개발을 처음 시작할 때 가장 처음 마주하게 될 프레임워크는 UIKit 이라고 할 수 있다.
iOS 애플리케이션의 사용자 인터페이스(User Interface, UI)를 생성(구현)하며 발생되는 이벤트를 관리하는 하나의 프레임워크이다.
UIkit는 MVC패턴으로 Model(데이터), View(UI), Controller로 나뉜다.
화면구성, 이벤트 관리 등 다양한 Object Library가 한데 모아져 있는 뼈대(Frame)이다.
UIkit VS SwiftUI
SwiftUI는 애플에서 2019년 6월에 있었던 WWDC 2019에서 발표한 프레임워크이다.
"좋은 앱을 만들기 위해 제일 짧은 방법" , "어디서든 더 적은 코드, 더 좋은 코드"
즉, 짧고 쉽게 더 좋은 앱을 만든 다는 것을 알 수 있다.
최근들어 SwiftUI를 선호하여 어플을 제작하고 있는 업종들이 많다.
그렇다면 UIKit를 공부할 필요가 없지 않나? 라는 생각이 들 수 있겠지만
지금까지 10년이 넘도록 UIkit를 사용해 왔다.
그렇기에 UIkit로 사용한 어플들이 다소 존재하고 있기 때문에 UIkit를 공부해놓아야 추후 현장에서 난감한 상황이 줄어들 것이다.
Storyboard란?
사용자가 마주하는 인터페이스를 시각적으로 '확인'하고, '설정'하는 일종의 캔버스(Canvas)
UlView와 UlViewController
Storyboard를 활용, 화면을 그리기에 앞서 크게 [2가지 구성요소]를 필요로 하다.
- [UIView]는 용어 그대로 화면(View)이자, 이를 구성하는 요소들의 기본 클래스이다. (여기서 '요소란, Labe이나 Button과 같은 Components, 하위 클래스를 의미합니다)
- [UIViewController]는 쉽게 말해 화면(View)을 관리하는 단위의 객체입니다.
애플리케이션 아이콘
'애플리케이션 아이콘' 은 말 그대로 앱스토어에서 어플을 다운로드 받을 때 보이는 그림이다.
Assets.xcassets -> AppIcon 통해 아이콘을 넣을 수 있다.
Launch screen storyboard
LaunchScreen.storyboard 는 애플리케이션이 시작될 때 보여지는 화면을 말한다.
애플리케이션을 실행하면 잠깐 보이는 그 화면을 의미한다.
참고)
- https://iosdevlime.tistory.com/entry/iOSUIKit-UIKit과-Storyboard에-대한-이해-그리고-AutoLayout의-필요성
- https://velog.io/@gnwjd309/iOS-CocoaTouch
SwiftUI 로 Todo 만들기
아키텍쳐 선택.
최근 아키텍쳐에 대한 공부를 진행하고 있던 터라 전체적인 구조 설계를 먼저 고민했습니다.
다른 프로젝트에 접목하기 위해 공부하고 있는 MVVM과 SwiftUI에서 최근 떠오르고 있는 라이브러리인 TCA 중 무엇을 붙일지 고민했습니다.
Model, View, ViewModel의 세 가지 구성 요소로 이루어져 있습니다. 이 패턴에서 View는 사용자 인터페이스를, ViewModel은 View를 위한 데이터와 명령을, Model은 실제 데이터와 데이터 처리 로직을 담당합니다.
상태(State), 액션(Action), 리듀서(Reducer)의 세 가지 요소. 이 패턴에서 상태는 애플리케이션의 현재 상태를, 액션은 상태를 변경하는 사용자의 행동을, 리듀서는 상태와 액션을 받아 새로운 상태를 반환하는 함수를 담당합니다.
이러한 장단점을 가진 아키텍쳐들에 대해 공부를 해보니 MVVM을 채택하기로 결정하였습니다.
왜 MVVM인가?
선언형 프로그래밍이 처음이여서 선언형 프로그래밍에 대해 공부할 시간을 늘리기 위함이였고, MVP의 목표가 CRUD가 메인인 만큼 TCA를 붙이는것이 너무 오버 엔지니어링인것 같았습니다. 이는 MVVM의 경우도 크게 다르지 않지만 적어도 다른 사람들이 MVVM을 사용하기위해서 SwiftUI가 더 많이 사용된다고 말한데에는 이유가 있었을것이라 생각되어서 이를 경험해 보고자 MVVM을 채택하게 되었습니다.
짜잔
'waffle' 카테고리의 다른 글
[waffle] 아이셔팀 중간정리 - Backend (0) | 2024.01.07 |
---|---|
[waffle] 아이셔팀 중간정리 - Android (0) | 2024.01.07 |
[waffle] 아이셔팀 중간정리 - FrontEnd (1) | 2024.01.07 |
[waffle] Bibs팀 중간정리 - Backend (0) | 2024.01.06 |
[waffle] Bibs 팀 중간정리 - Design (1) | 2024.01.06 |