logo
|
Blog

    [ Swift ] UIKit VS SwiftUI

    김보람's avatar
    김보람
    Oct 17, 2025
    [ Swift ] UIKit VS SwiftUI
    Contents
    1) UIKit + Storyboard / XIB개념장점단점(실무에서 자주 부딪힘)추천 상황2) UIKit + Code (Programmatic UI)개념장점단점추천 상황3) SwiftUI개념장점단점(현업 포인트)추천 상황4) 요즘 추세🌟 요약

    iOS에서 화면(UI)을 만드는 방식은 크게 3가지로 정리된다.

    1. UIKit + Storyboard/XIB(시각적으로 드래그해서 구성)

    2. UIKit + Code(Programmatic UI)(UIKit을 코드로 구성)

    3. SwiftUI(선언형 UI)

    각 방식은 “정답”이 있는 게 아니라 팀 규모, 유지보수, 레거시, 지원 OS, UI 복잡도에 따라 선택 기준이 달라진다.


    1) UIKit + Storyboard / XIB

    개념

    Xcode의 인터페이스 빌더에서 화면을 드래그 앤 드롭으로 구성하고, Auto Layout 제약을 잡은 뒤 IBOutlet/IBAction으로 코드와 연결하는 방식이다.

    장점

    • 프로토타이핑이 빠르다. 화면 구조를 시각적으로 바로 만들 수 있다.

    • 진입 장벽이 낮다. UI를 “눈으로 보면서” 조정하기 쉬운 편이다.

    • 레거시 프로젝트와 궁합이 좋다. 기존 앱에서 많이 쓰인다.

    단점(실무에서 자주 부딪힘)

    • Git 충돌이 잦다. storyboard/xib는 파일 구조상 머지가 까다롭다.

    • 런타임 에러가 생기기 쉽다. outlet 연결 누락/타입 불일치가 실행 중 크래시로 이어질 수 있다.

    • 규모가 커질수록 유지보수가 불편해진다. 화면이 많아질수록 파일이 무거워지고 복잡해진다.

    • 재사용/컴포넌트화가 답답해질 수 있다.

    추천 상황

    • 작은 프로젝트, 단순한 화면이 많을 때

    • 빠르게 데모/PoC를 만들어야 할 때

    • 기존 코드베이스가 storyboard 중심이라 유지보수가 목적일 때


    2) UIKit + Code (Programmatic UI)

    개념

    UIKit을 그대로 사용하되, UIView 생성부터 addSubview, Auto Layout 제약 설정까지 전부 코드로 작성하는 방식이다. (필요하면 SnapKit 같은 DSL을 쓰기도 한다.)

    장점

    • 버전관리/리뷰/머지에 강하다. 화면 변경이 코드 diff로 명확하게 보인다.

    • 재사용/컴포넌트화에 유리하다. 공통 UI(버튼/카드/셀 등)를 모듈로 만들기 쉽다.

    • 동적 UI에 강하다. 조건에 따라 뷰를 만들고 제거하는 로직이 자연스럽다.

    • 타입 안정성이 상대적으로 좋다. 연결 실수(outlet)로 인한 런타임 문제가 줄어드는 편이다.

    단점

    • 초반 학습 비용이 있다. Auto Layout을 코드로 다루는 데 익숙해져야 한다.

    • 처음엔 생산성이 떨어질 수 있다. 특히 레이아웃을 처음부터 코드로 짜는 게 부담일 수 있다.

    • 팀 컨벤션이 없으면 코드 스타일이 난잡해질 수 있다.

    추천 상황

    • 협업 인원이 많고 코드리뷰/머지가 중요한 팀

    • 공통 컴포넌트 재사용이 많은 서비스

    • 화면이 상태/조건에 따라 많이 바뀌는 앱

    • 장기 유지보수와 확장성이 중요한 프로젝트


    3) SwiftUI

    개념

    SwiftUI는 “어떻게 그릴지(절차)”를 나열하기보다, “현재 상태라면 이렇게 보여야 한다”를 선언하는 방식이다. 상태가 바뀌면 화면이 자동으로 갱신되는 구조다.

    장점

    • 코드가 짧고 UI 구조가 읽기 쉬운 편이다.

    • 상태 기반 UI가 자연스럽다. 로딩/에러/빈화면/성공 같은 상태 분기가 깔끔하다.

    • 멀티플랫폼 확장에 유리하다. iOS 중심으로 시작해도 다른 Apple 플랫폼까지 확장할 때 이점이 있다.

    • 점진 도입이 가능하다. 기존 UIKit 앱에서도 “새 화면만 SwiftUI”처럼 섞어 쓸 수 있다.

    단점(현업 포인트)

    • 세밀한 커스텀/특수 UI는 UIKit이 더 편한 경우가 있다.

    • 디버깅/성능 튜닝 방식이 다르다. UIKit 경험만으로는 초반에 낯설 수 있다.

    • 지원 OS 범위에 따라 제약이 생긴다. 최신 API를 쓰고 싶어도 최소 버전 때문에 못 쓰는 경우가 있다.

    추천 상황

    • 신규 앱/신규 화면을 빠르게 만들고 싶을 때

    • 상태 변화가 많은 화면(리스트/설정/폼 등)이 많을 때

    • 장기적으로 SwiftUI 중심으로 가져가려는 팀

    • 기존 앱이라도 “새 기능부터” 점진적으로 전환하고 싶을 때


    4) 요즘 추세

    최근 흐름은 신규 개발에서 SwiftUI 비중이 계속 커지는 방향이다. 다만 대형 서비스에는 UIKit 레거시가 크고, 복잡한 커스텀 UI/세밀한 제어는 여전히 UIKit이 강해 혼용(점진 도입)이 현실적인 선택이 되는 경우가 많다. 즉 “SwiftUI가 대세”이긴 하지만 “UIKit이 끝났다”가 아니라, 상황에 맞게 섞어서 쓰는 시대에 가깝다.


    🌟 요약

    • 레거시 유지보수 / 정교한 커스텀 UI / 복잡한 제어 → UIKit(코드 기반이 보통 유리하다)

    • 협업/머지/컴포넌트 재사용/확장성 → UIKit(Code) 강점이 크다

    • 신규 개발 / 상태 기반 UI / 빠른 개발 / 멀티플랫폼 고려 → SwiftUI가 유리하다

    • 현실적인 베스트 프랙티스 → 기존 UIKit + 새 화면 SwiftUI 같은 점진 전환이 많다

    구분

    UIKit + Storyboard/XIB

    UIKit + Code(Programmatic UI)

    SwiftUI

    한 줄 정의

    화면을 시각적으로 조립하고 코드와 연결

    UIKit을 전부 코드로 구성

    상태에 따라 UI를 선언형으로 표현

    UI 작성 방식

    드래그&드롭 + 제약조건 + IBOutlet/IBAction

    UIView 생성/추가 + Auto Layout(코드)

    View 조합 + 상태 변화로 자동 갱신

    생산성(초기)

    빠름(프로토타입 강함)

    중간(숙련 전엔 느릴 수 있음)

    빠름(화면 구성 자체가 간결)

    유지보수/확장

    규모 커질수록 복잡해지기 쉬움

    규모 커져도 구조화/모듈화하기 좋음

    구조 잘 잡으면 좋지만, 팀 경험치/버전 제약 영향 큼

    Git/머지

    불리함(XML 충돌 잦음)

    유리함(diff가 명확)

    유리함(diff가 명확)

    코드리뷰

    UI 변경 리뷰가 불편한 편

    매우 유리

    매우 유리

    재사용/컴포넌트화

    상대적으로 불편해질 수 있음

    강함(컴포넌트 설계 쉬움)

    강함(뷰 조합 쉬움)

    동적 UI(조건/상태에 따라 변화)

    복잡해지기 쉬움

    강함

    매우 강함(상태 기반이 자연스러움)

    타입 안정성

    Outlet 실수로 런타임 이슈 가능

    상대적으로 안전

    상대적으로 안전

    디버깅/트러블슈팅

    연결 문제/제약 문제 추적이 번거로울 때 있음

    추적이 비교적 명확

    패러다임이 달라 초반 학습 필요

    정교한 커스텀 UI/특수 제어

    가능(레거시/생태계 풍부)

    가장 강한 편

    가능하지만 UIKit이 더 편한 경우가 존재

    팀 협업

    소규모에선 괜찮지만 커지면 충돌 이슈

    대규모 협업에 유리

    대규모 협업에 유리(경험치 필요)

    추천 상황

    작은 앱, 빠른 데모, 레거시 유지

    대형/장기 프로젝트, 협업/모듈화 중요

    신규 화면/신규 앱, 상태 중심 UI, 점진 도입

    대표 단점 요약

    머지/연결 실수/대규모 관리

    초기 학습 비용/레이아웃 코드 작성 부담

    OS/팀 경험/세밀한 커스텀에서 제약 가능

    요즘 추세

    유지보수 위주로 남는 편

    UIKit 쓰는 팀은 코드 기반 선호

    신규 개발에서 비중 증가, 혼용(점진 도입) 많음

    Share article
    Contents
    1) UIKit + Storyboard / XIB개념장점단점(실무에서 자주 부딪힘)추천 상황2) UIKit + Code (Programmatic UI)개념장점단점추천 상황3) SwiftUI개념장점단점(현업 포인트)추천 상황4) 요즘 추세🌟 요약

    김보람 | 930802qhfka@gmail.com

    RSS·Powered by Inblog