티스토리 뷰

728x90

iOS 프로젝트를 생성할 때 "스토리보드(Storyboard)"와 "SwiftUI"를 선택하는 것은 앱의 UI를 구성하는 방식에서 큰 차이를 만듭니다. 두 방식은 근본적으로 다른 UI 설계 철학과 사용 방식을 따르고 있으며, 각각의 장단점이 있습니다.

1. 스토리보드(Storyboard)

스토리보드는 UIKit을 기반으로 한 시각적 UI 설계 도구입니다. iOS 앱 개발에서 오랫동안 사용되어 왔으며, Interface Builder에서 드래그 앤 드롭 방식으로 UI 요소들을 배치하고, 각 요소 간의 관계나 화면 전환 등을 시각적으로 정의할 수 있습니다.

특징

  • 드래그 앤 드롭 방식: Interface Builder를 통해 시각적으로 UI를 구성하며, 코드보다 쉽게 화면을 설계할 수 있습니다.
  • UI 요소 간의 관계 정의: 화면 간 전환(segue), 네비게이션, 탭바 등을 시각적으로 연결할 수 있습니다.
  • 스토리보드 파일: 스토리보드는 .storyboard 파일로 저장되며, 여러 화면(ViewController)과 UI 요소를 하나의 파일에서 관리할 수 있습니다.
  • Auto Layout: UI 요소들의 레이아웃은 Auto Layout을 사용하여 정의할 수 있습니다. 다양한 화면 크기나 기기에서의 적응력을 제공합니다.

스토리보드의 장점

  • 초보자도 쉽게 접근할 수 있는 시각적인 UI 설계 방식.
  • 여러 화면(ViewController)을 한눈에 보고 관리할 수 있음.
  • 오랜 기간 동안 사용된 안정적인 방식.

스토리보드의 단점

  • 규모가 커질 경우 복잡성 증가: 프로젝트가 커지면 스토리보드 파일이 매우 복잡해지고 관리하기 어려워집니다.
  • 협업의 어려움: 스토리보드는 XML 기반이므로, 여러 사람이 동시에 같은 스토리보드를 편집하면 충돌이 자주 발생할 수 있습니다.
  • 코드로 UI 제어하는 데 제약: 코드보다는 시각적인 도구에 의존하므로, 코드로만 UI를 제어하려는 경우 제약이 따를 수 있습니다.

2. SwiftUI

SwiftUI는 iOS 13에서 도입된 새로운 UI 프레임워크로, 선언형(Declarative) 방식으로 UI를 구성합니다. SwiftUI는 코드를 사용하여 UI를 구성하고, 상태 변화에 따라 UI가 자동으로 업데이트되도록 설계되었습니다.

특징

  • 선언형 UI 설계: SwiftUI에서는 "어떻게" UI가 동작하는지보다는 "무엇"을 보여줄지에 초점을 맞춥니다. 상태(State)가 바뀌면 UI가 자동으로 갱신됩니다.
  • 미리보기 기능: Xcode의 미리보기(Preview) 기능을 사용하여 코드로 작성한 UI의 결과를 실시간으로 볼 수 있습니다.
  • 코드 기반: 모든 UI 구성은 코드로 이루어지며, 코드 내에서 뷰의 계층을 정의합니다.
  • 플랫폼 통합: SwiftUI는 iOS뿐만 아니라 macOS, watchOS, tvOS에서도 동일한 방식으로 사용될 수 있습니다.

SwiftUI의 장점

  • 간결한 코드: 코드로 UI를 설계할 수 있으며, 상태 변화를 기반으로 한 간결한 구조.
  • 자동 UI 업데이트: 상태 변화에 따라 UI가 자동으로 반영되어, 데이터와 UI 동기화를 간편하게 처리할 수 있습니다.
  • 미리보기 기능: 실시간 미리보기를 통해 UI 변경 사항을 즉시 확인 가능.
  • 확장성: 다양한 애플 플랫폼에서 사용 가능하며, 적은 코드로 여러 플랫폼에 대응할 수 있습니다.

SwiftUI의 단점

  • 학습 곡선: SwiftUI의 선언형 방식은 UIKit의 절차적 방식에 익숙한 개발자들에게는 다소 새로운 개념일 수 있습니다.
  • 완전한 성숙 단계가 아님: SwiftUI는 상대적으로 새로운 프레임워크이기 때문에 일부 복잡한 UI 구성 요소에서 아직은 제약이 있을 수 있습니다.
  • 이전 iOS 버전과의 호환성: SwiftUI는 iOS 13 이상에서만 사용 가능하기 때문에, iOS 12 이하의 기기를 지원하는 프로젝트에서는 사용할 수 없습니다.

3. 스토리보드 vs SwiftUI 비교

                              스토리보드(Storyboard)                                 SwiftUI

UI 설계 방식 시각적, 드래그 앤 드롭 방식 코드 기반의 선언형 방식
미리보기 실시간 미리보기 기능이 없음 실시간 미리보기 지원
레이아웃 시스템 Auto Layout 및 Constraints 사용 선언형 레이아웃 방식
협업 여러 사람과의 협업에서 충돌 발생 가능성 코드 기반으로 협업 충돌 적음
플랫폼 지원 주로 iOS iOS, macOS, watchOS, tvOS 전반 지원
학습 곡선 비교적 쉬움 새로운 개념으로 학습 필요

4. 프로젝트 생성 시 선택 기준

  • 스토리보드 사용: 전통적인 방식의 UIKit을 사용하고자 하거나, 기존에 UIKit 기반으로 작성된 코드와의 호환성을 고려해야 할 때 적합합니다. 또한, 앱이 단순하고 UI 변경 사항이 많지 않다면 스토리보드로도 충분히 구현 가능합니다.
  • SwiftUI 사용: 최신 선언형 방식으로 간결한 코드를 작성하고 싶거나, 여러 애플 플랫폼(iOS, macOS, watchOS 등)을 대상으로 개발할 계획이라면 SwiftUI가 더 적합합니다. 또한, 실시간 미리보기나 상태 기반 UI 업데이트를 원한다면 SwiftUI의 이점을 누릴 수 있습니다.

이처럼 스토리보드와 SwiftUI는 각각의 용도와 상황에 따라 선택할 수 있으며, 필요에 따라 두 방식 모두를 프로젝트에서 혼합하여 사용하는 것도 가능합니다.

728x90

'Study > iOS' 카테고리의 다른 글

ObservableObject와 @StateObject, @ObservedObject란?  (0) 2024.09.21
SwiftUI의 @Binding이란?  (0) 2024.09.21
Self._printChanges()  (0) 2024.09.21
@State와 private을 함께 사용하는 이유  (0) 2024.09.21
UIKit와 SwiftUI 사용법  (0) 2024.09.20