iPadOS: ключови понятия, разработка за iPad и Apple Pencil

Автор: IT Sectr Публикувано: 2026-02-07 Време за четене: 12 мин

iPadOS — операционната система на Apple за iPad, отделена от iOS през 2019 г. Разработката за iPad отчита уникалните възможности: многозадачност Split View и Stage Manager, въвеждане с Apple Pencil с ниско закъснение и десктоп Safari.

Основни

  • iPadOS — форк на iOS с разширена многозадачност и поддръжка на Apple Pencil
  • Многозадачност включва Split View, Slide Over, Stage Manager и външни монитори
  • Apple Pencil — стилус със закъснение 9–20 ms, поддръжка на PencilKit и hover API
  • Адаптиране на интерфейса използва Size Classes (regular/compact) и UISplitViewController
  • Safari на iPadOS работи в десктоп режим с мениджър за изтегляния

Какво е iPadOS?

iPadOS — операционната система на Apple за iPad, пусната за първи път през 2019 г. като отклоние на iOS (версия 13). Преди това iPad използваше същия iOS като iPhone. Отделянето на iPadOS позволи на Apple да внедри функции, специфични за голям екран: многозадачност, десктоп Safari, Drag & Drop и поддръжка на външни монитори.

iPadOS запазва пълна съвместимост с iOS приложения: всяко iPhone приложение се стартира на iPad в режим на мащабиране. За качествено потребителско изживяване обаче е необходимо адаптиране: използване на Size Classes, UISplitViewController и поддръжка на клавишни комбинации. Според Apple (WWDC 2025), 80% от времето на iPad потребителите прекарват в таблетни версии, а не в мащабирани версии.

История на версиите на 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 142020Scribble за Apple Pencil, компактни разговори
iPadOS 152021Quick Note, подобрен мениджър за многозадачност
iPadOS 162022Stage Manager, външен монитор 6K
iPadOS 172023Интерактивни джаджи, Lock Screen
iPadOS 182024Калкулатор Math Notes, Smart Script

Архитектура на iPadOS и разлика от iOS

iPadOS се базира на същото XNU ядро и Darwin като iOS, но използва модифицирана обвивка на UIKit, адаптирана за работа с множество прозорци и произволни размери на екрана. Ключовата архитектурна разлика — поддръжка на UIScene, представена в iOS 13.

UIScene и жизнен цикъл на прозорците

В iPadOS всеки прозорец (включително в Split View) е отделна UISceneSession със собствен жизнен цикъл. За разлика от iPhone, където едно приложение има един UIWindowScene, на iPad едно приложение може да има множество UIScene (множество прозорци, Slide Over, Stage Manager). SceneDelegate управлява състоянието на всеки прозорец независимо.

swift
import UIKit
import SwiftUI

/// SceneDelegate за поддръжка на множество прозорци на iPadOS
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")")
    }
}

UISplitViewController с .tripleColumn стил показва три колони едновременно: sidebar (навигация), primary (списък) и detail (съдържание). При преход в компактен режим (Split View с друго приложение), UIKit автоматично сгъва колоните в навигационен стек. Разработчикът не управлява това поведение ръчно — UIKit адаптира оформлението чрез traitCollection.

Допълнителни разлики от iOS

В iPadOS са налични: поддръжка на външни устройства чрез Files (USB-C/Thunderbolt), терминален режим на Safari с проверка на елементи, клавишни комбинации чрез UIKeyCommand, системен мениджър за изтегляния, Drag & Drop между приложения и 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 и по-нови) — мениджър на прозорци, който позволява създаване на припокриващи се прозорци с произволни размери. Поддържа до 4 прозореца на екрана на iPad и до 4 на външен монитор (общо 8). Приложенията получават събитие UISceneWillConnectNotification за всеки нов прозорец. Stage Manager променя правилата на жизнения цикъл: прозорецът на заден план не се замразява, а продължава да работи с ограничени ресурси.

РежимБрой прозорциРазмер на прозорецаSize Class
Цял екран1100% екранRegular
Split View 50/50250% екранRegular (iPad Pro 12.9) или Compact
Split View 33/67233% / 67%Compact за 33%
Slide Over1 + плаващ320 ptCompact
Stage Manager1–4ПроизволенЗависи от размера

Apple Pencil и ръкописно въвеждане

Apple Pencil — активен стилус на Apple с поддръжка на наклон, натиск и hover откриване (iPad Pro M2+). Закъснението между движението на писалката и показването на мастилото е 9–20 ms в зависимост от модела. 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")
    }
}

PKCanvasView с drawingPolicy .anyInput приема както Apple Pencil, така и пръст. PKToolPicker дава на потребителя избор на инструменти без необходимост от писане на собствен UI. PKDrawing се съхранява в двоичен формат с висока степен на компресия — един час рисуване заема около 5–10 MB.

Scribble и разпознаване на текст

Scribble (iPadOS 14+) позволява ръкописно въвеждане във всяко UITextField и UITextView. Системата разпознава ръкописен текст на устройството, използвайки Neural Engine. ML моделът работи с латиница и кирилица. В iOS 17+ Scribble поддържа автоматична корекция и предсказване на следващата дума. Разработчикът не трябва да добавя код — Scribble работи автоматично при наличие на поле за въвеждане.

Hover API за Apple Pencil Pro

От iPadOS 17.4 и Apple Pencil Pro, разработчиците получават hover събития при приближаване на писалката до екрана (до 12 mm). Събитието съдържа позиция, сила на натиск и азимут. Приложение: преглед на точката на допир на четката в приложения за рисуване, преглед на инструмент, визуална обратна връзка преди допир.

Адаптиране на интерфейса за iPad

Адаптивен интерфейс — задължително изискване за iPad приложения. iPad работи в различни размери на екрана (8.3″–13″) и режими на многозадачност. UIKit предоставя Size Classes (horizontal: .regular/.compact, vertical: .regular/.compact) и UISplitViewController за автоматично адаптиране.

Size Classes и traitCollection

Size Classes — абстракция, която определя наличното пространство. На iPad в режим на цял екран и двете оси са .regular. В Split View (50%) хоризонталният клас може да стане .compact на iPad mini или iPad Air. Всички популярни оформления, изградени на Auto Layout и UICollectionViewCompositionalLayout, се адаптират автоматично. Персонализираното адаптиране се извършва чрез заместване на traitCollectionDidChange.

swift
import SwiftUI

/// Адаптивно оформление за iPad с използване на Size Classes
struct AdaptiveContentView: View {
    @Environment(\.horizontalSizeClass) private var horizontalSizeClass
    @Environment(\.verticalSizeClass) private var verticalSizeClass

    var body: some View {
        if horizontalSizeClass == .regular && verticalSizeClass == .regular {
            // Таблетен режим: sidebar + content
            NavigationSplitView {
                SidebarView()
            } detail: {
                ContentGridView()
            }
        } else {
            // Компактен режим: стекова навигация
            NavigationStack {
                ContentGridView()
            }
        }
    }
}

/// Пример за адаптивна мрежа: 3 колони на iPad, 2 на iPhone
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 vs 2) също се променя в зависимост от Size Classes. Всичко се обновява автоматично при промяна на режима на многозадачност.

UISplitViewController: навигация с три колони

UIKit предоставя UISplitViewController с три стила: .doubleColumn (sidebar + detail), .tripleColumn (sidebar + primary + detail) и .single. В iPadOS 16+ splitViewController автоматично превключва между стиловете при промяна на size class. Разработчикът задава viewControllers за всяка колона, UIKit управлява видимостта.

Фреймуърци и API за iPadOS

iPadOS SDK включва всички iOS фреймуърци, както и API, достъпни само на iPad. По-долу са представени ключовите възможности, специфични за iPad.

Drag & Drop

iPadOS поддържа Drag & Drop между приложения и в рамките на приложение. UIDragInteraction и UIDropInteraction позволяват влачене на текст, изображения, файлове и персонализирани обекти. Drag & Drop работи едновременно с Multi-Touch: потребителят може да влачи няколко елемента с различни пръсти. В 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Навигация с множество колониДа
PencilKitРисуване с Apple PencilНе
UIDragInteractionDrag & DropДа (само в приложение)
UIKeyCommandКлавишни комбинацииДа (само с външна клавиатура)
UISceneРежим на множество прозорциДа (само iPad)
UIPencilInteractionДвойно докосване Apple PencilНе
PDFKitПреглед и анотиране на PDFДа

Оптимизиране на приложения за iPad

Разработката за iPadOS изисква специален подход към UI/UX, производителност и тестване. Грешки, простими на iPhone, стават критични на iPad поради по-големия екран и многозадачността.

Производителност и памет

iPad използва чипове от серия M (M1, M2, M4) с унифицирана памет до 16 GB. Въпреки мощния хардуер, приложението в Split View или Slide Over споделя ресурси с друго приложение. Натискът върху паметта е по-висок отколкото на iPhone. Използвайте компресия на изображения, мързеливо зареждане на колекции и профилиране чрез Instruments Allocations. iPad Pro M4 с 16 GB позволява стартиране на приложения на десктоп ниво (Final Cut Pro, Logic Pro).

Keyboard First дизайн

Повечето потребители на iPad използват външна клавиатура. Интерфейсът трябва да бъде напълно управляем от клавиатурата: Tab за навигация между полета, Space за активиране на избран елемент, Enter за потвърждение. Добавете поддръжка за Full Keyboard Access — системна настройка, позволяваща управление на всеки UI елемент от клавиатурата.

Тестване на реални устройства

Симулаторът на iPad не възпроизвежда напълно поведението на многозадачността. Тествайте на реално устройство в различни режими: Split View с тежко приложение (Safari с 20 раздела), Stage Manager с 4 прозореца, 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 с hover откриване, десктоп Safari с мениджър за изтегляния, външни монитори с родна разделителна способност и файлова система Files с достъп до външни устройства чрез USB-C.

Как да добавим поддръжка на Split View в приложение?

Split View се поддържа автоматично, ако приложението използва UISplitViewController. Приложението трябва правилно да обработва промените на size class: при преход в компактен режим използвайте UINavigationController за стека от екрани. За изричен отказ от Split View задайте UIRequiresFullScreen = YES в Info.plist.

Как да интегрираме Apple Pencil в приложение?

Използвайте PencilKit: PKCanvasView за повърхност за рисуване и PKToolPicker за избор на инструменти. За персонализирана обработка на допири на писалката — UIEvent с тип .hover и UIPencilInteraction за двойно докосване. Закъснение на Apple Pencil Pro — 9 ms, предишно поколение — 20 ms.

Какви са размерите на екрана на 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 за адаптиране. Външни монитори до 6K чрез Thunderbolt. Stage Manager поддържа до 8 прозореца (4 на iPad + 4 на външен монитор).

Поддържа ли iPadOS външни монитори?

iPadOS 17+ поддържа външни монитори чрез USB-C/Thunderbolt с родна разделителна способност до 6K. Приложението може да показва съдържание на външен монитор чрез отделен UIWindowScene със собствен жизнен цикъл. Stage Manager поддържа до 4 прозореца на външен монитор.

Обобщение

  • iPadOS — специалната OS на Apple за iPad с многозадачност, Apple Pencil и десктоп Safari
  • Многозадачност включва Split View, Slide Over (320 pt) и Stage Manager (до 8 прозореца)
  • Apple Pencil се поддържа чрез PencilKit със закъснение 9–20 ms и hover API
  • Адаптивен UI използва Size Classes и UISplitViewController за всички режими
  • iPadOS SDK включва Drag & Drop, UIKeyCommand, външни монитори 6K и UIScene
  • Stage Manager (M1+) позволява припокриващи се прозорци с произволни размери
  • Тестване задължително на реални устройства във всички режими на многозадачност

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също