iOS에서 UI 개발의 두 가지 접근 방식을 알아보자.

Daehyeon Yun·2025년 3월 16일
post-thumbnail


💻 iOS UI 개발의 두 가지 접근 방식 : SwiftUI와 UIKit

iOS 애플리케이션을 개발할 때, 화면을 구성하는 방법은 크게 UIKitSwiftUI 가 존재한다.

해당 방식들은 각각 iOS UI 개발의 접근 방식을 다르게 제공한다.

이러한 요소들을 이해하기 전, iOS의 기반이 되는 프레임워크인 Cocoa Touch Framework 에 대해 살펴봐야한다.


☕ Cocoa Touch Framework 란?

  • Cocoa Touch 는 iOS 애플리케이션 개발을 위한 기본 프레임워크 → 해당 프레임워크는 UIKit , Foundation 등의 핵심 프레임워크를 포함하며 iOS 앱이 하드웨어(iPhone, iPad)에서 실행될 수 있도록 지원한다.

📎 Cocoa Touch의 주요 구성 요소

구성 요소설명
UIKitiOS UI 개발을 담당하는 프레임워크 (뷰, 버튼, 애니메이션 등)
Foundation데이터 관리, 날짜, 파일 입출력, 네트워킹 등의 기능 제공
Core Animation부드러운 애니메이션과 그래픽 렌더링 처리
Core Graphics2D 그래픽을 처리하는 저수준 그래픽 API
Core Data데이터 저장 및 관리 (로컬 데이터베이스)
AVFoundation오디오, 비디오 재생 및 편집 기능

위 표를 토대로 UIKit , SwiftUICocoa Touch 프레임워크 안에서 동작하는 UI 프레임워크라고 볼 수 있다.

⚡ 하지만 UIKit와 SwiftUI는 완전히 다른 방식으로 UI를 구현한다.


💡iOS UI 개발의 전통적인 방식인 UIKit

UIKit은 iOS 2부터 사용된 전통적인 UI 프레임워크이며, 현재 iOS 개발을 할 때 가장 많이 사용되는 방식이다.

현재도 대부분의 앱이 UIKit를 기반으로 만들어졌으며, 유지보수 역시 UIKit를 중심으로 진행된다.

📌 UIKit의 주요 특징

  1. 명령형 프로그래밍(Imperative UI) 방식이다.

    → 개발자가 직접 UI 요소를 생성하고 업데이트할 때마다 코드를 실행해야 한다.

  2. UIViewController 기반 구조다.

    → 앱의 화면을 UIViewController 가 관리하며, UI 요소들은 UIView 기반으로 구성된다.

  3. 스토리보드(Storyboard)와 코드 방식 지원

    → UIKit는 스토리보드를 이용한 GUI 방식코드 베이스 방식 2가지로 UI를 구성할 수 있다.

  4. 대부분의 기업에서 사용 중이다.

    → 현재까지도 대부분의 iOS 앱이 UIKit를 기반으로 개발되고 있다.

📌 UIKit의 UI 개발 방식

UIKit는 2가지 방법으로 UI를 개발한다.

  1. StoryBoard (GUI 방식)

    • Xcode에서 GUI로 화면을 구성할 수 있다. (= Android Studio와 유사하다.)
    • 초보자가 UI를 쉽게 만들 수 있지만 협업 및 유지보수가 어렵다.
  2. ⭐ 코드 기반 UI

    • UIViewAuto Layout 을 직접 코드로 작성하여 UI를 구성한다.
    • 스토리보드보다 유연하고 협업 시 Git 충돌 이 상대적으로 적어 실무에서 선호된다.
    • 코드 베이스 방식 예시 (버튼 추가)
      • 🤜 UIButton 을 직접 만들고 이벤트를 연결하는 명령형 방식
    class ViewController: UIViewController {
    	override func viewDidLoad() {
    		super.viewDidLoad()
    		
    		let button = UIButton(type: .system)
    		button.setTitle("클릭하세요", for: .normal)
    		button.frame = CGRect(x: 50, y: 150, width: 200, height: 50)
    		button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
    		
    		view.addSubView(button)
    	}
    	
    	@objc func buttonTapped() {
    		print("버튼이 눌렸습니다.")
    	}
    }

🧨 선언형 UI의 SwiftUI

SwiftUI는 iOS 13부터 도입된 새로운 UI 프레임워크이다.

⭐ UIKit와는 다르게 선언형(Declarative UI) 방식을 사용한다.

이는 코드가 매우 간결하고 직관적이지만 아직 모든 UIKit 기능을 대체하지 못하고 있다.

📌 SwiftUI의 주요 특징

  1. 선언현 프로그래밍(Declarative UI) 방식이다.

    → UI를 코드에서 직접 그리는게 아닌 UI가 어떤 모습이어야 하는지 를 선언하는 형식이다.

  2. UIKit와 AppKit를 대체하는 새로운 방식이다.

    → SwiftUI는 iOS, macOS, watchOS, tvOS 에서 공통적으로 사용할 수 있는 UI 프레임워크이다.

  3. 코드가 간결하고 유지보수가 쉽다.

    → 기존 UIKit보다 훨씬 적은 코드로 UI를 만들 수 있다.

  4. ⭐ iOS 13 이상에서만 사용 가능하다.

    → iOS 12 이하를 지원해야 하는 앱에서는 SwiftUI를 단독으로 사용할 수 없다.

📎 SwiftUI의 UI 개발 방식

SwiftUI는 스토리보드 없이 모든 UI를 코드로 작성한다.

SwiftUI 코드 예시 (버튼 추가)

import SwiftUI

struct ContentView: View {
	var body: some View {
		Button("클릭하세요") {
			print("버튼이 눌렸어요")
		}
		.padding()
	}
}

→ UIKit와 달리 Button 을 선언하면 자동으로 표시된다.

→ ⭐ UI 변경이 자동으로 반영되므로 addSubView() 와 같은 함수의 사용이 필요 없다.


👊 UIKit와 SwiftUI 비교

UIKitSwiftUI
UI 구성 방식UIViewController + UIViewView 구조체 기반
프로그래밍 방식명령형 (Imperative)선언형 (Declarative)
파일 관리Storyboard, .xib, .swift 파일 분리됨모든 UI가 .swift 파일에서 정의됨
호환성iOS 2 이상 지원iOS 13 이상 지원
기업 사용대부분 UIKit 기반SwiftUI는 일부 화면에서 사용됨
장점더 세밀한 UI 컨트롤 가능코드가 간결하고 유지보수 용이
단점코드가 많아질 수 있음성숙도가 낮고 일부 기능 부족

🧑‍🚀 요약!

  1. Cocoa Touch Framework는 iOS 개발의 기본이며, UIKit과 SwiftUI는 그 위에서 동작하는 UI 프레임워크이다.
  2. UIKit은 기존의 명령형 방식 UI 프레임워크이며, 현재 대부분의 앱에서 사용된다.
  3. SwiftUI는 선언형 방식의 새로운 UI 프레임워크지만, 아직 UIKit을 완전히 대체하지 못한다.
profile
열심히 살아야지

0개의 댓글