SwiftUI는 Apple에서 제공하는 선언형 UI 프레임워크로, Swift 언어를 기반으로 iOS, macOS, watchOS, tvOS 앱의 사용자 인터페이스를 효율적으로 구성할 수 있도록 설계되었습니다.
어떻게(How)가 아닌 무엇(What)을 그릴지에 집중합니다.@State, @Binding, @ObservedObject, @EnvironmentObject 등을 사용하여 상태를 정의하고 뷰를 업데이트합니다.View 프로토콜을 따릅니다.HStack, VStack, ZStack 등의 스택을 사용해 레이아웃을 구성합니다.@State: 값 타입 상태. 로컬 상태를 저장.@Binding: 상위 뷰의 상태를 하위 뷰에 바인딩.@ObservedObject: 클래스 인스턴스를 관찰하고 뷰를 갱신.@EnvironmentObject: 앱 전체에서 공유되는 상태.@StateObject: 뷰가 직접 생성한 ObservableObject를 소유하고 관리.| 항목 | UIKit | SwiftUI |
|---|---|---|
| UI 방식 | 명령형 | 선언형 |
| 코드 구조 | 복잡 | 간결 |
| 상태 관리 | 수동 | 자동 |
| 레이아웃 | AutoLayout | Stack 기반 |
| Preview | 없음 | 실시간 Preview 지원 |
SwiftUI와 UIKit은 UIHostingController, UIViewRepresentable, UIViewControllerRepresentable 등을 통해 서로 연동할 수 있습니다. 이를 통해 기존 UIKit 기반 프로젝트에서도 SwiftUI를 점진적으로 도입할 수 있습니다.
SwiftUI는 미래 지향적인 UI 프레임워크로, iOS 앱 개발의 생산성과 코드 가독성을 크게 향상시킵니다. 다만, 아직 UIKit에 비해 일부 기능이 제한적일 수 있어 상황에 따라 병행 사용을 고려해야 합니다.