iPadOS — операційна система Apple для iPad, виділена з iOS у 2019 році. Розробка під iPad враховує унікальні можливості: багатозадачність Split View і Stage Manager, введення Apple Pencil з низькою затримкою та десктопний Safari.
Головне
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 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 13 | 2019 | Slide Over, Split View, десктопний Safari |
| iPadOS 14 | 2020 | Scribble для Apple Pencil, компактні дзвінки |
| iPadOS 15 | 2021 | Quick Note, покращений менеджер багатозадачності |
| iPadOS 16 | 2022 | Stage Manager, зовнішній монітор 6K |
| iPadOS 17 | 2023 | Інтерактивні віджети, Lock Screen |
| iPadOS 18 | 2024 | Калькулятор Math Notes, Smart Script |
iPadOS базується на тому ж XNU-ядрі та Darwin, що й iOS, але використовує модифіковану оболонку UIKit, адаптовану для роботи з кількома вікнами та довільними розмірами екрана. Ключова архітектурна відмінність — підтримка UIScene, представленого в iOS 13.
В iPadOS кожне вікно (у тому числі в Split View) — окрема UISceneSession із власним життєвим циклом. На відміну від iPhone, де один застосунок має один UIWindowScene, на iPad один застосунок може мати кілька UIScene (кілька вікон, Slide Over, Stage Manager). SceneDelegate керує станом кожного вікна незалежно.
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 стилем відображає три колонки одночасно: сайдбар (навігація), primary (список) та detail (контент). При переході в компактний режим (Split View з іншим застосунком) UIKit автоматично згортає колонки в навігаційний стек. Розробник не керує цією поведінкою вручну — UIKit адаптує макет через traitCollection.
В iPadOS доступні: підтримка зовнішніх накопичувачів через Files (USB-C/Thunderbolt), термінальний режим Safari з інспекцією елементів, клавіатурні скорочення через UIKeyCommand, системний менеджер завантажень, Drag & Drop між застосунками та Picture in Picture зі змінним розміром вікна.
Багатозадачність — ключова особливість iPadOS, яка принципово відрізняє її від iOS. Користувач може одночасно працювати з кількома застосунками на одному екрані. Розробник повинен гарантувати, що застосунок коректно працює в будь-якому режимі багатозадачності.
Split View ділить екран iPad між двома застосунками у співвідношенні 50/50 або 33/67. Кожен застосунок отримує свій UISceneSession із власною пам'яттю та життєвим циклом. При ширині екрана менше 600 точок UIKit примусово переводить застосунок у компактний горизонтальний size class. Застосунок повинен коректно обробляти цю зміну.
Slide Over — плаваюче вікно поверх активного застосунку (ширина 320 точок). Застосунок у Slide Over переходить у компактний горизонтальний size class (.compact). Важливо оптимізувати UI для вузького екрана. У Slide Over застосунок може бути викликаний свайпом від правого краю або через док. Користувач може перетягнути Slide Over у Split View або закрити свайпом вправо.
Stage Manager (iPadOS 16+, M1 і новіше) — віконний менеджер, який дозволяє створювати перекривні вікна довільних розмірів. Підтримується до 4 вікон на екрані iPad та до 4 на зовнішньому моніторі (всього 8). Застосунки отримують подію UISceneWillConnectNotification для кожного нового вікна. Stage Manager змінює правила життєвого циклу: вікно у фоні не заморожується, а продовжує роботу з обмеженими ресурсами.
| Режим | Кількість вікон | Розмір вікна | Size Class |
|---|---|---|---|
| Повний екран | 1 | 100% екрана | Regular |
| Split View 50/50 | 2 | 50% екрана | Regular (iPad Pro 12.9) або Compact |
| Split View 33/67 | 2 | 33% / 67% | Compact для 33% |
| Slide Over | 1 + плаваюче | 320 pt | Compact |
| Stage Manager | 1–4 | Довільний | Залежить від розміру |
Apple Pencil — активний стилус Apple із підтримкою нахилу, тиску та hover-детекції (iPad Pro M2+). Затримка між рухом пера та відображенням чорнила становить 9–20 мс залежно від моделі. PencilKit — основний фреймворк для інтеграції малювання в застосунок.
PKCanvasView надає готову поверхню для малювання з підтримкою туші, олівця, маркера та ластика. PKToolPicker — панель вибору інструментів. Розробнику не потрібно реалізовувати рендеринг штрихів — PencilKit робить це апаратно з метал-шейдерами. Доступні налаштування кольору, товщини та прозорості пера.
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 МБ.
Scribble (iPadOS 14+) дозволяє писати від руки в будь-якому UITextField та UITextView. Система розпізнає рукописне введення на пристрої з використанням Neural Engine. ML-модель працює з латиницею та кирилицею. В iOS 17+ Scribble підтримує автозаміну та передбачення наступного слова. Розробнику не потрібно додавати код — Scribble працює автоматично за наявності поля введення.
З iPadOS 17.4 та Apple Pencil Pro розробники отримують hover-події при наближенні стилуса до екрана (до 12 мм). Подія містить позицію, силу натискання та азимут. Застосування: попередній перегляд точки дотику пензля в малювалках, прев'ю інструмента, візуальний зворотний зв'язок до дотику.
Адаптивний інтерфейс — обов'язкова вимога для iPad-застосунків. iPad працює в різних розмірах екрана (8.3"–13") та режимах багатозадачності. UIKit надає Size Classes (horizontal: .regular/.compact, vertical: .regular/.compact) та UISplitViewController для автоматичної адаптації.
Size Classes — абстракція, що визначає доступний простір. На iPad у повноекранному режимі обидві осі — .regular. У Split View (50%) горизонтальний клас може стати .compact на iPad mini або iPad Air. Усі популярні верстки, побудовані на Auto Layout та UICollectionViewCompositionalLayout, адаптуються автоматично. Кастомна адаптація виконується перевизначенням traitCollectionDidChange.
import SwiftUI
/// Адаптивний layout для 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. Все оновлюється автоматично при зміні режиму багатозадачності.
UIKit надає UISplitViewController з трьома стилями: .doubleColumn (сайдбар + detail), .tripleColumn (сайдбар + primary + detail) та .single. В iPadOS 16+ splitViewController автоматично перемикається між стилями при зміні size class. Розробник задає viewControllers для кожної колонки, UIKit керує видимістю.
iPadOS SDK включає всі фреймворки iOS, а також API, доступні тільки на iPad. Нижче наведені ключові iPad-специфічні можливості.
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 | Ні |
| UIDragInteraction | Drag & Drop | Так (тільки в застосунку) |
| UIKeyCommand | Клавіатурні скорочення | Так (тільки із зовнішньою клавіатурою) |
| UIScene | Мультивіконний режим | Так (тільки iPad) |
| UIPencilInteraction | Подвійний тап Apple Pencil | Ні |
| PDFKit | Перегляд та анотування PDF | Так |
Розробка під iPadOS вимагає особливого підходу до UI/UX, продуктивності та тестування. Помилки, простимі на iPhone, стають критичними на iPad через більший екран та багатозадачність.
iPad використовує M-серію чіпів (M1, M2, M4) з уніфікованою пам'яттю до 16 ГБ. Незважаючи на потужне залізо, застосунок у Split View або Slide Over ділить ресурси з іншим застосунком. Memory pressure вищий, ніж на iPhone. Використовуйте стиснення зображень, lazy loading колекцій та профілювання через Instruments Allocations. iPad Pro M4 з 16 ГБ дозволяє запускати застосунки рівня десктопа (Final Cut Pro, Logic Pro).
Більшість користувачів iPad використовують зовнішню клавіатуру. Інтерфейс має бути повністю керованим з клавіатури: Tab для навігації по полях, Space для активації вибраного елемента, Enter для підтвердження. Додайте підтримку Full Keyboard Access — системного налаштування, що дозволяє керувати будь-яким UI-елементом з клавіатури.
Симулятор iPad не повністю відтворює поведінку багатозадачності. Тестуйте на реальному пристрої в різних режимах: Split View з важким застосунком (Safari з 20 вкладками), Stage Manager з 4 вікнами, Slide Over зі швидкою зміною застосунків. Перевірте сценарій: користувач відкриває застосунок із Slide Over, перетягує його в Split View, змінює розмір, закриває — застосунок не повинен вилітати.
// Перевірка поточного режиму багатозадачності на 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 має розширену багатозадачність (Split View, Slide Over, Stage Manager), підтримку Apple Pencil з hover-детекцією, десктопний Safari з менеджером завантажень, зовнішні монітори з нативною роздільною здатністю та файлову систему Files із доступом до зовнішніх накопичувачів через USB-C.
Split View підтримується автоматично, якщо застосунок використовує UISplitViewController. Застосунок повинен коректно обробляти зміни size class: при переході в компактний режим використовувати UINavigationController для стека екранів. Для явної відмови від Split View вкажіть UIRequiresFullScreen = YES в Info.plist.
Використовуйте PencilKit: PKCanvasView для поверхні малювання та PKToolPicker для вибору інструментів. Для кастомної обробки натискань стилуса — UIEvent з типом .hover та UIPencilInteraction для подвійного тапа. Затримка Apple Pencil Pro — 9 мс, попереднього покоління — 20 мс.
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 17+ підтримує зовнішні монітори через USB-C/Thunderbolt з нативною роздільною здатністю до 6K. Застосунок може відображати контент на зовнішньому моніторі через окремий UIWindowScene із власним життєвим циклом. Stage Manager підтримує до 4 вікон на зовнішньому моніторі.
Підсумки
Ми розробимо мобільний застосунок під ключ
IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.