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 стилом приказује три колоне истовремено: sidebar (навигација), 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-у апликација се може позвати превлачењем са десне ивице или преко dock-а. Корисник може да превуче 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 ms у зависности од модела. PencilKit — главни фрејмворк за интеграцију цртања у апликацију.
PKCanvasView пружа готову површину за цртање са подршком за мастило, оловку, маркер и гумицу. PKToolPicker — панел за избор алата. Програмер не мора да имплементира рендеровање потеза — PencilKit то ради хардверски са Metal шейдерима. Доступно је подешавање боје, дебљине и провидности оловке.
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 (iPadOS 14+) омогућава рукописни унос у било ком UITextField и UITextView. Систем препознаје рукопис на уређају користећи Neural Engine. ML модел ради са латиницом и ћирилицом. У iOS 17+ Scribble подржава аутоматску исправку и предвиђање следеће речи. Програмер не мора да додаје код — Scribble ради аутоматски када постоји поље за унос.
Од iPadOS 17.4 и Apple Pencil Pro, програмери добијају hover догађаје при приближавању оловке екрану (до 12 mm). Догађај садржи позицију, снагу притиска и азимут. Примена: преглед тачке додира четкице у апликацијама за цртање, преглед алата, визуелна повратна информација пре додира.
Адаптивни интерфејс — обавезан захтев за 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
/// Адаптивни распоред за 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 (sidebar + detail), .tripleColumn (sidebar + 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 GB. Упркос моћном хардверу, апликација у Split View или Slide Over дели ресурсе са другом апликацијом. Притисак на меморију је већи него на iPhone-у. Користите компресију слика, лењо учитавање колекција и профилисање кроз Instruments Allocations. iPad Pro M4 са 16 GB омогућава покретање апликација десктоп нивоа (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 ms, претходне генерације — 20 ms.
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. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође