[TIL] SwiftUI

Eden·2025년 8월 6일

SwiftUI는 Apple에서 제공하는 선언형 UI 프레임워크로, Swift 언어를 기반으로 iOS, macOS, watchOS, tvOS 앱의 사용자 인터페이스를 효율적으로 구성할 수 있도록 설계되었습니다.


주요 특징

선언형 문법

  • 어떻게(How)가 아닌 무엇(What)을 그릴지에 집중합니다.
  • 상태에 따라 UI가 자동으로 갱신됩니다.

상태 기반 업데이트

  • @State, @Binding, @ObservedObject, @EnvironmentObject 등을 사용하여 상태를 정의하고 뷰를 업데이트합니다.

여러 플랫폼 지원

  • 하나의 코드로 iOS, iPadOS, macOS, watchOS, tvOS 앱을 모두 개발할 수 있습니다.

미리보기 기능 (Xcode Previews)

  • 실시간으로 UI 결과를 확인하며 개발할 수 있습니다.

주요 구성 요소

View

  • 모든 UI 요소는 View 프로토콜을 따릅니다.
  • 중첩 구조로 UI를 구성하며, 재사용 가능한 컴포넌트를 쉽게 만들 수 있습니다.

Modifier

  • 뷰에 체이닝 방식으로 스타일이나 동작을 추가합니다.

Layout

  • HStack, VStack, ZStack 등의 스택을 사용해 레이아웃을 구성합니다.

상태 관리 속성

  • @State: 값 타입 상태. 로컬 상태를 저장.
  • @Binding: 상위 뷰의 상태를 하위 뷰에 바인딩.
  • @ObservedObject: 클래스 인스턴스를 관찰하고 뷰를 갱신.
  • @EnvironmentObject: 앱 전체에서 공유되는 상태.
  • @StateObject: 뷰가 직접 생성한 ObservableObject를 소유하고 관리.

SwiftUI와 UIKit의 차이점

항목UIKitSwiftUI
UI 방식명령형선언형
코드 구조복잡간결
상태 관리수동자동
레이아웃AutoLayoutStack 기반
Preview없음실시간 Preview 지원

사용 시 장점

  • 코드량 감소로 유지보수 효율 증가
  • 실시간 미리보기로 개발 속도 향상
  • iOS 전반에 걸친 일관된 디자인 구성 가능

사용 시 고려사항

  • iOS 13 이상에서만 지원
  • 일부 복잡한 동작은 UIKit 연동이 필요할 수 있음
  • 새로운 개념(State, Binding 등)에 대한 학습 필요

UIKit 연동

SwiftUI와 UIKit은 UIHostingController, UIViewRepresentable, UIViewControllerRepresentable 등을 통해 서로 연동할 수 있습니다. 이를 통해 기존 UIKit 기반 프로젝트에서도 SwiftUI를 점진적으로 도입할 수 있습니다.


결론

SwiftUI는 미래 지향적인 UI 프레임워크로, iOS 앱 개발의 생산성과 코드 가독성을 크게 향상시킵니다. 다만, 아직 UIKit에 비해 일부 기능이 제한적일 수 있어 상황에 따라 병행 사용을 고려해야 합니다.

profile
iOS Dev

0개의 댓글