[UIKit] UIKit 톺아보기

2025. 3. 16. 20:10·Apple/UIKit
728x90
반응형

안녕하세요! 피피아노입니다 🎵

 

요즘 UIKit에 대해서 공부를 하고 있는데 까먹지 않으려면 꾸준히 기록을 해야 할 것 같아서 이번 포스팅에서는 UIKit에 대해서 정리를 해보려고 합니다.

 

그럼 바로 시작하겠습니다!

 

UIKit이란?

UIKit은 Apple 플랫폼용 앱을 구축하기 위한 프레임워크입니다. 표준 컴포넌트의 포괄적인 라이브러리를 사용하여 앱 인터페이스를 정의하고 관리합니다.

 

UIKit은 AppKit(macOS용)의 iOS 버전으로 시작되었으며, 2007년 첫 iPhone 발표와 함께 iPhone SDK의 일부로 처음 공개 되었습니다.

 

UIKit 특징

UIKit의 특징을 간단하게 정리해보겠습니다.

  • 객체 지향 UI 프레임워크 - iOS, iPadOS, tvOS 앱 개발을 위한 기본 프레임워크
  • MVC 패턴 기반 - Model-View-Controller 아키텍처를 따름
  • 명령형 - 명령형 프로그래밍 프레임워크
  • Auto Layout - 제약 조건 기반의 적응형 레이아웃 시스템
  • 뷰 계층 구조 - UIView를 상속한 컴포넌트들이 계층적으로 구성됨
  • 뷰 컨트롤러 기반 - UIViewController가 화면과 사용자 상호작용 관리
  • View - View를 직접 생성하고 제어(더 섬세하게 조절 가능)

UIView와 뷰 계층 구조

UIKit의 가장 기본적인 구성 요소는 UIView 클래스입니다. 모든 시각적 요소는 이 클래스를 상속받아 구현됩니다.

// 간단한 뷰 계층 구조 예시
let containerView = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
containerView.backgroundColor = .gray

let childView = UIView(frame: CGRect(x: 50, y: 50, width: 200, height: 200))
childView.backgroundColor = .blue

containerView.addSubview(childView)

 

UIViewController와 화면 관리

UIViewController는 UIKit 앱의 화면과 사용자 상호작용을 관리하는 핵심 클래스라고 이해하시면 됩니다. 각 화면은 보통 하나의 뷰 컨트롤러에 의해 관리되고 아래와 같은 특징을 가지고 있습니다.

  • 화면의 뷰 계층 구조 관리
  • 사용자 이벤트에 대한 응답
  • 다른 뷰 컨트롤러와의 전환 조정
  • 시스템 이벤트(메모리 경고, 화면 회전 등)에 대한 처리
class MyViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // 뷰가 메모리에 로드된 후 초기 설정
        view.backgroundColor = .white
        
        let label = UILabel(frame: CGRect(x: 20, y: 100, width: view.bounds.width - 40, height: 40))
        label.text = "UIKit 예제"
        label.textAlignment = .center
        view.addSubview(label)
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        // 뷰가 화면에 나타나기 직전에 호출
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        // 뷰가 화면에 나타난 후 호출
    }
}

 

Auto Layout

UIKit의 가장 핵심 기능 중 하나는 Auto Layout입니다. 아마 UIKit을 살짝이라도 공부를 해봤거나 들어본 분은 Auto Layout도 같이 들어보셨을텐데, UIKit에서는 Auto Layout을 통해 화면 크기와 방향에 자동으로 적응하는 UI를 구축할 수 있습니다.

func setupConstraints() {
    let button = UIButton(type: .system)
    button.setTitle("탭하기", for: .normal)
    button.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(button)
    
    NSLayoutConstraint.activate([
        button.centerXAnchor.constraint(equalTo: view.centerXAnchor),
        button.centerYAnchor.constraint(equalTo: view.centerYAnchor),
        button.widthAnchor.constraint(equalToConstant: 100),
        button.heightAnchor.constraint(equalToConstant: 44)
    ])
}

 

iPhone이 처음 나왔을 때는 Auto Layout이란 개념이 없었지만 아이폰의 라인업이 다양해지고 화면이 크기도 다양해지면서 일관된 레이아웃을 유지하기 위해 이러한 개념이 등장했다고 합니다.

 

SwiftUI와의 상호 운용성

UIKit은 SwiftUI와 통합해서 사용할 수 있는데 UIKit을 SwiftUI에서 사용하려면 UIViewRepresetable 프로토콜을 사용해야 하고 

SwiftUI를 UIKit에서 사용하려면 UIHostingController를 사용해야 합니다.

 

UIKit의 생명주기

UIKit으로 만들어진 iOS 앱의 생명주기는 다음과 같은 상태로 관리되게 됩니다.

  1. Not Running: 앱이 실행되지 않은 상태
  2. Inactive: 앱이 실행 중이지만 이벤트를 받지 않는 상태
  3. Active: 앱이 실행 중이고 이벤트를 받을 수 있는 상태
  4. Background: 앱이 백그라운드에서 코드를 실행 중인 상태
  5. Suspended: 앱이 백그라운드에 있지만 코드를 실행하지 않는 상태

감사합니다.

 

잘못된 내용이 있거나 더 좋은 내용 피드백은 언제나 환영합니다!

궁금하신 부분은 댓글로 질문 부탁드립니다!

728x90
반응형

'Apple > UIKit' 카테고리의 다른 글

[UIKit] UIViewController란 무엇일까?  (0) 2025.03.19
'Apple/UIKit' 카테고리의 다른 글
  • [UIKit] UIViewController란 무엇일까?
P_Piano
P_Piano
Apple 생태계 개발자가 되기 위한 학습과 경험의 기록
    반응형
    250x250
  • P_Piano
    피피아노의 개발 일지
    P_Piano
  • 전체
    오늘
    어제
    • 분류 전체보기 (201)
      • Apple (119)
        • iOS (22)
        • visionOS (4)
        • Swift (65)
        • UIKit (2)
        • SwiftUI (20)
        • RxSwift (2)
        • Xcode (4)
      • C언어 (5)
      • C++ (8)
      • Dart (1)
      • Python (3)
      • JavaScript (17)
      • Git (1)
      • CS (39)
        • 디자인 패턴 (6)
        • 네트워크 (20)
        • 운영체제 (8)
        • Database (5)
        • 자료구조 (0)
      • IT 지식 (2)
      • IT 뉴스 (4)
      • 출처 표기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    옵셔널
    제어문
    Initializers
    Xcode
    이니셜라이저
    네트워크
    ios
    UIKit
    코딩테스트
    오블완
    연산자
    프로세스
    디자인패턴
    SWIFT
    함수
    combine
    운영체제
    프로퍼티 래퍼
    swiftUI
    배열
    Optional
    Vision Pro
    자바스크립트
    스위프트
    클래스
    티스토리챌린지
    비동기
    visionOS
    변수
    메서드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
P_Piano
[UIKit] UIKit 톺아보기
상단으로

티스토리툴바