← 글 목록

notes

IOS - UIKit , SwiftUI

UIKit과 SwiftUI의 UI 구성 방식·상태 처리와 선택 기준 비교.

UIKit만 쓰다가 SwiftUI Preview를 보고 “이제 다 바꿔?” 했다가, 레거시 WebView·결제 SDK 앞에서는 다시 UIKit으로 돌아왔다. 선택은 취향이 아니라 제약이다.

한 줄 감각

  • UIKit: 명령형. 뷰를 만들고 붙이고 제약을 건다. VC 생명주기가 중심.
  • SwiftUI: 선언형. body가 상태의 함수. @State 바뀌면 다시 그림.

같은 버튼

// UIKit
let button = UIButton(type: .system)
button.setTitle("확인", for: .normal)
button.addTarget(self, action: #selector(ok), for: .touchUpInside)
view.addSubview(button)
// SwiftUI
Button("확인") { ok() }

언제 무엇을

섞을 때는 UIHostingController로 SwiftUI를 UIKit에 넣고, 반대로 UIViewRepresentable로 UIKit을 SwiftUI에 넣는다. “전부 교체”보다 화면 단위로 이주가 현실적이었다.