[iOS 14주차] SwiftUI vs UIKit

DoyleHWorks·2025년 1월 20일
0

SwiftUI vs UIKit

SwiftUI와 UIKit은 모두 iOS 앱 개발을 위한 UI 프레임워크이지만, 각각의 목적과 특징이 다르다.


1. 개발 방식

  • SwiftUI: 선언형(Declarative) 방식
    → "이 UI가 어떻게 보여야 하는지"를 코드로 설명함. (예: Text("Hello, world!"))
  • UIKit: 명령형(Imperative) 방식
    → UI 요소를 만들고, 속성을 설정하고, 동작을 정의하는 방식. (예: UILabel을 만들고 text 속성을 설정)

2. 코드의 간결함

  • SwiftUI는 코드가 훨씬 간결함. 예를 들어, SwiftUI에서는 한 줄로 버튼을 만들 수 있지만 UIKit에서는 UIButton을 생성하고 타겟을 추가하는 등 여러 줄이 필요함.
  • UIKit은 코드량이 많고 복잡해질 수 있음.

예제 코드 비교 (버튼 생성)

SwiftUI:

Button("Tap me") {
    print("Button tapped!")
}

UIKit:

let button = UIButton(type: .system)
button.setTitle("Tap me", for: .normal)
button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)

3. 데이터 바인딩

  • SwiftUI: @State, @Binding, @ObservedObject 등을 사용해 데이터 바인딩이 쉬움.
  • UIKit: delegate, NotificationCenter, KVO 등을 사용해야 하므로 코드가 복잡해질 수 있음.

SwiftUI 예제 (데이터 바인딩)

@State private var counter = 0

Button("Count: \(counter)") {
    counter += 1
}

UIKit 예제 (데이터 바인딩)

var counter = 0
button.addTarget(self, action: #selector(updateCounter), for: .touchUpInside)

@objc func updateCounter() {
    counter += 1
    button.setTitle("Count: \(counter)", for: .normal)
}

4. 애니메이션

  • SwiftUI: 간단한 코드로 애니메이션을 적용 가능 (.animation(), .transition())
  • UIKit: UIView.animate 또는 Core Animation 사용해야 함

SwiftUI 애니메이션

withAnimation {
    isExpanded.toggle()
}

UIKit 애니메이션

UIView.animate(withDuration: 0.3) {
    view.alpha = 0.5
}

5. 호환성

  • SwiftUI: iOS 13 이상 지원
  • UIKit: iOS 2부터 지원, 기존 앱과의 호환성이 좋음

즉, SwiftUI는 최신 iOS 버전에서만 동작하지만, UIKit은 더 많은 iOS 버전을 지원함.


6. Storyboard 사용 여부

  • SwiftUI: Storyboard 없이 코드만으로 UI 설계 가능.
  • UIKit: StoryboardXIB 사용 가능.

7. 커스텀 UI 제작

  • SwiftUI: 커스텀 UI를 만들기 편리하지만, UIKit보다 자유도가 낮을 수도 있음.
  • UIKit: 복잡한 커스텀 뷰를 제작하는 데 더 강력한 기능을 제공함.

8. 학습 난이도

  • SwiftUI: Swift만 알면 쉽게 배울 수 있음.
  • UIKit: 델리게이트 패턴, 뷰 컨트롤러 라이프사이클, 오토레이아웃 등을 알아야 하므로 진입 장벽이 높음.

✅ 어떤 것을 선택해야 할까?

기준SwiftUIUIKit
개발 방식선언형명령형
코드 길이짧고 간결길고 복잡
데이터 바인딩쉬움 (@State, @Binding)어려움 (delegate, KVO)
애니메이션간편 (.animation())UIView.animate() 필요
iOS 지원iOS 13+iOS 2+
Storyboard필요 없음필요할 수도 있음
학습 난이도쉬움어려움

📌 SwiftUI는 최신 프로젝트에서 추천되며, 간결한 코드와 직관적인 방식으로 UI를 만들 수 있음.
📌 UIKit은 기존 프로젝트 유지보수나 복잡한 UI 개발에 유리함.
📌 SwiftUI는 완전히 UIKit을 대체하지 않으며, UIKit과 함께 사용할 수 있음. (UIHostingController 활용)


🔥 결론

SwiftUI는 미래의 UI 프레임워크지만, UIKit도 여전히 중요함.
현재는 SwiftUI + UIKit 병행 사용이 현실적인 접근 방식! 🚀

profile
Reciprocity lies in knowing enough

0개의 댓글

관련 채용 정보