iPadOS: 핵심 개념, iPad 개발 및 Apple Pencil

저자: IT Sectr 게시일: 2026-02-07 읽는 시간: 12 분

iPadOS는 2019년 iOS에서 분리된 Apple의 iPad용 운영 체제입니다. iPad 개발은 Split View 및 Stage Manager 멀티태스킹, 저지연 Apple Pencil 입력, 데스크톱 Safari와 같은 고유한 기능을 고려합니다.

핵심 포인트

  • iPadOS — 확장된 멀티태스킹과 Apple Pencil 지원을 갖춘 iOS의 포크
  • 멀티태스킹에는 Split View, Slide Over, Stage Manager 및 외부 모니터가 포함됩니다
  • Apple Pencil — 9–20ms 지연 시간의 스타일러스, PencilKit 및 hover API 지원
  • 인터페이스 적응은 Size Classes(regular/compact)와 UISplitViewController를 사용합니다
  • Safari는 iPadOS에서 데스크톱 모드로 다운로드 관리자와 함께 실행됩니다

iPadOS란 무엇인가?

iPadOS는 2019년 iOS(버전 13)의 포크로 처음 출시된 Apple의 iPad용 운영 체제입니다. 그 이전에는 iPad가 iPhone과 동일한 iOS를 사용했습니다. iPadOS의 분리를 통해 Apple은 대형 화면에 특화된 기능(멀티태스킹, 데스크톱 Safari, 드래그 앤 드롭, 외부 모니터 지원)을 도입할 수 있었습니다.

iPadOS는 iOS 앱과 완벽한 호환성을 유지합니다. 모든 iPhone 앱은 iPad에서 스케일링 모드로 실행됩니다. 그러나 양질의 사용자 경험을 위해서는 적응이 필요합니다. Size Classes, UISplitViewController 및 키보드 단축키 지원을 사용합니다. Apple(WWDC 2025)에 따르면, iPad 사용 시간의 80%는 스케일링된 버전이 아닌 태블릿 최적화 버전에서 보내집니다.

iPadOS 버전 역사

iPadOS 13(2019)은 Slide Over와 Split View를 도입했습니다. iPadOS 14(2020)는 Apple Pencil Scribble과 컴팩트 UI를 추가했습니다. iPadOS 15(2021)는 Quick Note와 멀티태스킹 개선을 도입했습니다. iPadOS 16(2022)은 Stage Manager와 외부 모니터 지원을 가져왔습니다. iPadOS 17(2023)은 인터랙티브 위젯과 Lock Screen 사용자 지정을 추가했습니다.

iPadOS 버전연도주요 혁신
iPadOS 132019Slide Over, Split View, 데스크톱 Safari
iPadOS 142020Apple Pencil용 Scribble, 컴팩트 통화
iPadOS 152021Quick Note, 개선된 멀티태스킹 관리자
iPadOS 162022Stage Manager, 외부 6K 모니터
iPadOS 172023인터랙티브 위젯, Lock Screen
iPadOS 182024계산기 Math Notes, Smart Script

iPadOS 아키텍처 및 iOS와의 차이점

iPadOS는 iOS와 동일한 XNU 커널 및 Darwin을 기반으로 하지만, 여러 창과 임의의 화면 크기에 맞게 수정된 UIKit 셸을 사용합니다. 주요 아키텍처 차이점은 iOS 13에서 도입된 UIScene 지원입니다.

UIScene 및 창 수명 주기

iPadOS에서 각 창(Split View의 창 포함)은 고유한 수명 주기를 가진 별도의 UISceneSession입니다. 하나의 앱이 하나의 UIWindowScene을 갖는 iPhone과 달리, iPad에서는 하나의 앱이 여러 UIScene(여러 창, Slide Over, Stage Manager)을 가질 수 있습니다. SceneDelegate는 각 창의 상태를 독립적으로 관리합니다.

swift
import UIKit
import SwiftUI

/// iPadOS에서 여러 창 지원을 위한 SceneDelegate
class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?
    var splitVC: UISplitViewController?

    func scene(_ scene: UIScene,
                 willConnectTo session: UISceneSession,
                 options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }

        // 태블릿 탐색을 위한 UISplitViewController 생성
        let splitVC = UISplitViewController(style: .tripleColumn)
        splitVC.primaryBackgroundStyle = .sidebar

        let sidebar = SidebarViewController()
        let primary = PrimaryViewController()
        let detail = DetailViewController()

        splitVC.viewControllers = [sidebar, primary, detail]

        let window = UIWindow(windowScene: windowScene)
        window.rootViewController = splitVC
        window.makeKeyAndVisible()
        self.window = window
    }

    // 창 크기 변경 시 적응(Split View)
    func windowScene(_ windowScene: UIWindowScene,
                     didUpdate previousCoordinateSpace: UICoordinateSpace,
                     interfaceOrientation previousOrientation: UIInterfaceOrientation) {
        let isMultitasking = windowScene.traitCollection.horizontalSizeClass == .compact
        print("iPadOS multitasking mode: \(isMultitasking ? "compact" : "regular")")
    }
}

.tripleColumn 스타일의 UISplitViewController는 사이드바(탐색), 기본(목록), 세부 정보(콘텐츠)의 세 개의 열을 동시에 표시합니다. 컴팩트 모드(다른 앱과 Split View)로 전환할 때 UIKit은 자동으로 열을 탐색 스택으로 축소합니다. 개발자는 이 동작을 수동으로 관리하지 않습니다. UIKit은 traitCollection을 통해 레이아웃을 적응시킵니다.

iOS와의 추가 차이점

iPadOS 제공 기능: Files(USB-C/Thunderbolt)를 통한 외부 저장소 지원, 요소 검사가 포함된 Safari 터미널 모드, UIKeyCommand를 통한 키보드 단축키, 시스템 다운로드 관리자, 앱 간 드래그 앤 드롭, 크기 조정 가능한 창의 Picture in Picture.

iPad의 멀티태스킹: Split View, Slide Over, Stage Manager

멀티태스킹은 iPadOS의 핵심 기능으로 iOS와 근본적으로 구분됩니다. 사용자는 하나의 화면에서 여러 앱으로 동시에 작업할 수 있습니다. 개발자는 앱이 모든 멀티태스킹 모드에서 올바르게 작동하는지 확인해야 합니다.

Split View

Split View는 iPad 화면을 두 앱 간에 50/50 또는 33/67 비율로 나눕니다. 각 앱은 고유한 메모리와 수명 주기를 가진 자체 UISceneSession을 받습니다. 화면 너비가 600포인트 미만이면 UIKit은 앱을 강제로 컴팩트 가로 size class로 전환합니다. 앱은 이 변경 사항을 올바르게 처리해야 합니다.

Slide Over

Slide Over는 활성 앱 위에 떠 있는 창(너비 320포인트)입니다. Slide Over의 앱은 컴팩트 가로 size class(.compact)로 전환됩니다. 좁은 화면에 UI를 최적화하는 것이 중요합니다. Slide Over에서 앱은 오른쪽 가장자리에서 스와이프하거나 독을 통해 호출할 수 있습니다. 사용자는 Slide Over를 Split View로 끌어오거나 오른쪽으로 스와이프하여 닫을 수 있습니다.

Stage Manager

Stage Manager(iPadOS 16+, M1 이상)는 임의의 크기로 겹치는 창을 만들 수 있는 창 관리자입니다. iPad 화면에서 최대 4개, 외부 모니터에서 최대 4개(총 8개)의 창을 지원합니다. 앱은 각 새 창에 대해 UISceneWillConnectNotification 이벤트를 수신합니다. Stage Manager는 수명 주기 규칙을 변경합니다. 백그라운드 창은 정지되지 않고 제한된 리소스로 계속 작동합니다.

모드창 수창 크기Size Class
전체 화면1화면의 100%Regular
Split View 50/502화면의 50%Regular(iPad Pro 12.9) 또는 Compact
Split View 33/67233% / 67%33%의 경우 Compact
Slide Over1 + 플로팅320 ptCompact
Stage Manager1–4임의크기에 따라 다름

Apple Pencil 및 필기 입력

Apple Pencil은 기울기, 압력 및 호버 감지(iPad Pro M2+)를 지원하는 Apple의 능동형 스타일러스입니다. 펜 움직임과 잉크 표시 사이의 지연 시간은 모델에 따라 9–20ms입니다. PencilKit은 앱에 드로잉을 통합하기 위한 기본 프레임워크입니다.

PencilKit: 드로잉 통합

PKCanvasView는 잉크, 연필, 마커 및 지우개를 지원하는 즉시 사용 가능한 드로잉 표면을 제공합니다. PKToolPicker는 도구 선택 패널입니다. 개발자는 스트로크 렌더링을 구현할 필요가 없습니다. PencilKit이 Metal 셰이더로 하드웨어 가속 처리합니다. 펜 색상, 두께 및 불투명도 사용자 지정이 가능합니다.

swift
import PencilKit
import UIKit

class DrawingViewController: UIViewController {

    private lazy var canvasView: PKCanvasView = {
        let canvas = PKCanvasView()
        canvas.tool = PKInkingTool(.pen, color: .black, width: 5)
        canvas.delegate = self
        canvas.drawingPolicy = .anyInput
        canvas.backgroundColor = .white
        return canvas
    }()

    private lazy var toolPicker: PKToolPicker = {
        let picker = PKToolPicker()
        picker.addObserver(canvasView)
        picker.setVisible(true, forFirstResponder: canvasView)
        return picker
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(canvasView)
        canvasView.frame = view.bounds
        canvasView.becomeFirstResponder()
        toolPicker.addObserver(canvasView)
    }

    // PKDrawing에 드로잉 저장(바이너리 형식)
    func saveDrawing() {
        let drawingData = canvasView.drawing.dataRepresentation()
        let url = FileManager.default.urls(
            for: .documentDirectory, in: .userDomainMask
        )[0].appendingPathComponent("drawing.drawing")
        try? drawingData.write(to: url)
    }
}

extension DrawingViewController: PKCanvasViewDelegate {
    func canvasViewDrawingDidChange(_ canvasView: PKCanvasView) {
        print("Canvas changed: \(canvasView.drawing.strokes.count) strokes")
    }
}

drawingPolicy .anyInput의 PKCanvasView는 Apple Pencil과 손가락 입력을 모두 허용합니다. PKToolPicker는 사용자 지정 UI를 작성하지 않고도 도구 선택을 제공합니다. PKDrawing은 높은 압축률의 바이너리 형식으로 저장됩니다. 1시간 드로잉은 약 5–10MB를 차지합니다.

Scribble 및 텍스트 인식

Scribble(iPadOS 14+)은 모든 UITextField 및 UITextView에 필기 입력을 허용합니다. 시스템은 Neural Engine을 사용하여 기기에서 필기를 인식합니다. ML 모델은 라틴 문자와 키릴 문자를 지원합니다. iOS 17+에서 Scribble은 자동 수정 및 다음 단어 예측을 지원합니다. 개발자는 코드를 추가할 필요가 없습니다. Scribble은 입력 필드가 있으면 자동으로 작동합니다.

Apple Pencil Pro용 Hover API

iPadOS 17.4 및 Apple Pencil Pro부터 개발자는 스타일러스가 화면에 가까워지면(최대 12mm) 호버 이벤트를 받을 수 있습니다. 이벤트에는 위치, 힘 및 방위각이 포함됩니다. 용도: 드로잉 앱의 브러시 접촉점 미리보기, 도구 미리보기, 터치 전 시각적 피드백.

iPad를 위한 인터페이스 적응

적응형 인터페이스는 iPad 앱의 필수 요구 사항입니다. iPad는 다양한 화면 크기(8.3"–13")와 멀티태스킹 모드에서 작동합니다. UIKit은 자동 적응을 위해 Size Classes(가로: .regular/.compact, 세로: .regular/.compact)와 UISplitViewController를 제공합니다.

Size Classes 및 traitCollection

Size Classes는 사용 가능한 공간을 정의하는 추상화입니다. 전체 화면 모드의 iPad에서는 두 축이 모두 .regular입니다. Split View(50%)에서는 iPad mini 또는 iPad Air에서 가로 클래스가 .compact가 될 수 있습니다. Auto Layout 및 UICollectionViewCompositionalLayout으로 구축된 모든 인기 레이아웃은 자동으로 적응됩니다. 사용자 지정 적응은 traitCollectionDidChange를 재정의하여 수행됩니다.

swift
import SwiftUI

/// Size Classes를 사용한 iPad용 적응형 레이아웃
struct AdaptiveContentView: View {
    @Environment(\.horizontalSizeClass) private var horizontalSizeClass
    @Environment(\.verticalSizeClass) private var verticalSizeClass

    var body: some View {
        if horizontalSizeClass == .regular && verticalSizeClass == .regular {
            // 태블릿 모드: 사이드바 + 콘텐츠
            NavigationSplitView {
                SidebarView()
            } detail: {
                ContentGridView()
            }
        } else {
            // 컴팩트 모드: 스택 탐색
            NavigationStack {
                ContentGridView()
            }
        }
    }
}

/// 적응형 그리드 예: iPad에서 3열, iPhone에서 2열
struct ContentGridView: View {
    @Environment(\.horizontalSizeClass) private var horizontalSizeClass

    private var columns: [GridItem] {
        let count = horizontalSizeClass == .regular ? 3 : 2
        return Array(repeating: GridItem(.flexible(), spacing: 16), count: count)
    }

    var body: some View {
        ScrollView {
            LazyVGrid(columns: columns, spacing: 16) {
                ForEach(items) { item in
                    ItemCard(item: item)
                }
            }
            .padding()
        }
    }
}

예제에서 NavigationSplitView는 horizontalSizeClass == .regular(전체 화면 iPad)인 경우에만 사용됩니다. NavigationStack은 컴팩트 모드에서 사용됩니다. 그리드 열 수(3 대 2)도 Size Classes에 따라 변경됩니다. 멀티태스킹 모드가 변경되면 모든 것이 자동으로 업데이트됩니다.

UISplitViewController: 3열 탐색

UIKit은 .doubleColumn(사이드바 + 세부 정보), .tripleColumn(사이드바 + 기본 + 세부 정보), .single의 세 가지 스타일로 UISplitViewController를 제공합니다. iPadOS 16+에서 size class가 변경되면 splitViewController가 자동으로 스타일 간에 전환됩니다. 개발자는 각 열에 viewControllers를 설정하고 UIKit이 가시성을 관리합니다.

iPadOS용 프레임워크 및 API

iPadOS SDK에는 모든 iOS 프레임워크와 iPad에서만 사용할 수 있는 API가 포함되어 있습니다. 아래는 주요 iPad별 기능입니다.

드래그 앤 드롭

iPadOS는 앱 간 및 앱 내 드래그 앤 드롭을 지원합니다. UIDragInteractionUIDropInteraction은 텍스트, 이미지, 파일 및 사용자 지정 개체를 끌 수 있도록 합니다. 드래그 앤 드롭은 멀티터치와 동시에 작동합니다. 사용자는 다른 손가락으로 여러 항목을 끌 수 있습니다. SwiftUI에서는 .onDrag 및 .onDrop 수정자가 사용됩니다.

키보드 단축키

키보드(Magic Keyboard, Smart Keyboard) 연결 시 UIKeyCommand로 단축키를 추가할 수 있습니다. iPadOS 17+에서 Cmd를 길게 누르면 키보드 단축키가 표시됩니다. Apple은 표준 조합을 지원할 것을 권장합니다: ⌘C(복사), ⌘V(붙여넣기), ⌘F(찾기), ⌘N(새 문서).

외부 모니터

iPadOS 17+는 최대 6K(Pro Display XDR)의 기본 해상도를 가진 외부 모니터를 지원합니다. 앱은 별도의 세션 식별자를 가진 UIWindowScene을 통해 외부 화면에 콘텐츠를 표시할 수 있습니다. Stage Manager는 외부 모니터에 크기 조정 가능한 최대 4개의 창을 배치할 수 있습니다.

API목적iOS에서 사용 가능
UISplitViewController다중 열 탐색
PencilKitApple Pencil 드로잉아니오
UIDragInteraction드래그 앤 드롭예(앱 내에서만)
UIKeyCommand키보드 단축키예(외부 키보드만)
UIScene다중 창 모드예(iPad만)
UIPencilInteractionApple Pencil 더블 탭아니오
PDFKitPDF 보기 및 주석

iPad용 앱 최적화

iPadOS 개발은 UI/UX, 성능 및 테스트에 특별한 접근 방식이 필요합니다. iPhone에서는 용서되는 오류도 더 큰 화면과 멀티태스킹으로 인해 iPad에서는 심각해집니다.

성능 및 메모리

iPad는 최대 16GB 통합 메모리를 갖춘 M 시리즈 칩(M1, M2, M4)을 사용합니다. 강력한 하드웨어에도 불구하고 Split View 또는 Slide Over의 앱은 다른 앱과 리소스를 공유합니다. 메모리 압력은 iPhone보다 높습니다. 이미지 압축, 컬렉션의 지연 로딩 및 Instruments Allocations를 통한 프로파일링을 사용하세요. 16GB iPad Pro M4는 데스크톱급 앱(Final Cut Pro, Logic Pro)을 실행할 수 있습니다.

키보드 퍼스트 디자인

대부분의 iPad 사용자는 외부 키보드를 사용합니다. 인터페이스는 완전히 키보드로 탐색 가능해야 합니다: 필드 이동에 Tab, 선택한 요소 활성화에 Space, 확인에 Enter. Full Keyboard Access 지원을 추가하세요. 키보드로 모든 UI 요소를 제어할 수 있는 시스템 설정입니다.

실제 기기에서 테스트

iPad 시뮬레이터는 멀티태스킹 동작을 완전히 재현하지 못합니다. 다양한 모드에서 실제 기기로 테스트하세요: 무거운 앱(20개 탭의 Safari)과 Split View, 4개 창의 Stage Manager, 빠른 앱 전환의 Slide Over. 시나리오 확인: 사용자가 Slide Over에서 앱을 열고 Split View로 끌고 크기를 변경하고 닫습니다 — 앱이 충돌하지 않아야 합니다.

objective-c
// iPadOS에서 현재 멀티태스킹 모드 확인
- (void)checkMultitaskingMode:(UIWindowScene *)scene {
    if (scene.traitCollection.userInterfaceIdiom != UIUserInterfaceIdiomPad) {
        return;
    }

    BOOL isFullScreen = (scene.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular &&
                              scene.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular);

    BOOL isSlideOver = (CGRectGetWidth(scene.coordinateSpace.bounds) == 320.0);

    if (scene.windows.first?.windowScene?.activationConditions.canBecomeFocused == YES) {
        NSLog(@"Stage Manager 활성");
    }

    if (isSlideOver) {
        NSLog(@"Slide Over 모드");
    } else if (isFullScreen) {
        NSLog(@"전체 화면 모드");
    } else {
        NSLog(@"Split View 모드");
    }
}

자주 묻는 질문

iPadOS와 iOS의 차이점은 무엇인가요?

iPadOS는 확장된 멀티태스킹(Split View, Slide Over, Stage Manager), 호버 감지 기능의 Apple Pencil 지원, 다운로드 관리자가 있는 데스크톱 Safari, 기본 해상도의 외부 모니터, USB-C를 통한 외장 드라이브 액세스가 가능한 Files 파일 시스템을 갖추고 있습니다.

앱에 Split View 지원을 추가하려면 어떻게 해야 하나요?

앱이 UISplitViewController를 사용하는 경우 Split View가 자동으로 지원됩니다. 앱은 size class 변경을 올바르게 처리해야 합니다. 컴팩트 모드로 전환할 때 화면 스택에 UINavigationController를 사용하세요. Split View를 명시적으로 거부하려면 Info.plist에서 UIRequiresFullScreen = YES를 지정하세요.

앱에 Apple Pencil을 어떻게 통합하나요?

PencilKit을 사용하세요: 드로잉 표면에는 PKCanvasView, 도구 선택에는 PKToolPicker. 사용자 지정 스타일러스 입력 처리를 위해 — .hover 유형의 UIEvent와 더블 탭용 UIPencilInteraction. Apple Pencil Pro의 지연 시간은 9ms, 이전 세대는 20ms입니다.

iPad의 화면 크기는 어떻게 되나요?

iPad mini 8.3"(2266×1488), iPad Air 10.9"(2360×1640), iPad Pro 11"(2388×1668), iPad Pro 13" M4(2752×2064). 적응을 위해 Size Classes와 Auto Layout을 사용하세요. Thunderbolt를 통해 최대 6K 외부 모니터. Stage Manager는 최대 8개 창(iPad에서 4개 + 외부 모니터에서 4개)을 지원합니다.

iPadOS에서 외부 모니터를 지원하나요?

iPadOS 17+는 USB-C/Thunderbolt를 통해 최대 6K 기본 해상도의 외부 모니터를 지원합니다. 앱은 자체 수명 주기를 가진 별도의 UIWindowScene을 통해 외부 모니터에 콘텐츠를 표시할 수 있습니다. Stage Manager는 외부 모니터에서 최대 4개의 창을 지원합니다.

요약

  • iPadOS는 멀티태스킹, Apple Pencil 및 데스크톱 Safari를 갖춘 Apple의 전용 iPad OS
  • 멀티태스킹에는 Split View, Slide Over(320pt) 및 Stage Manager(최대 8개 창)가 포함됩니다
  • Apple Pencil은 PencilKit을 통해 9–20ms 지연 시간 및 hover API로 지원됩니다
  • 적응형 UI는 모든 모드에 Size Classes와 UISplitViewController를 사용합니다
  • iPadOS SDK에는 드래그 앤 드롭, UIKeyCommand, 외부 6K 모니터 및 UIScene이 포함됩니다
  • Stage Manager(M1+)는 임의 크기의 겹치는 창을 허용합니다
  • 테스트는 모든 멀티태스킹 모드에서 실제 기기로 필수입니다

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기