iPadOS, 2019 yılında iOS'tan ayrılan Apple'ın iPad işletim sistemidir. iPad geliştirme, benzersiz yetenekleri dikkate alır: Split View ve Stage Manager çoklu görevi, düşük gecikmeli Apple Pencil girişi ve masaüstü Safari.
Önemli Noktalar
iPadOS, ilk olarak 2019'da iOS'un (sürüm 13) bir çatalı olarak yayınlanan Apple'ın iPad işletim sistemidir. Bundan önce iPad, iPhone ile aynı iOS'u kullanıyordu. iPadOS'un ayrılması, Apple'ın büyük ekrana özel özellikler sunmasına olanak sağladı: çoklu görev, masaüstü Safari, sürükle ve bırak ve harici monitör desteği.
iPadOS, iOS uygulamalarıyla tam uyumluluğu korur: herhangi bir iPhone uygulaması iPad'de ölçekleme modunda çalışır. Ancak, kaliteli bir kullanıcı deneyimi uyarlama gerektirir: Size Classes, UISplitViewController ve klavye kısayolu desteği kullanma. Apple'a (WWDC 2025) göre, iPad'deki zamanın %80'i kullanıcılar ölçeklenmiş sürümler yerine tablet için optimize edilmiş sürümlerde geçiriyor.
iPadOS 13 (2019) Slide Over ve Split View'i tanıttı. iPadOS 14 (2020) Apple Pencil Scribble ve kompakt arayüz ekledi. iPadOS 15 (2021) Quick Note ve çoklu görev iyileştirmelerini tanıttı. iPadOS 16 (2022) Stage Manager ve harici monitör desteğini getirdi. iPadOS 17 (2023) etkileşimli widget'lar ve Kilit Ekranı kişiselleştirme ekledi.
| iPadOS Sürümü | Yıl | Temel Yenilik |
|---|---|---|
| iPadOS 13 | 2019 | Slide Over, Split View, masaüstü Safari |
| iPadOS 14 | 2020 | Apple Pencil için Scribble, kompakt aramalar |
| iPadOS 15 | 2021 | Quick Note, geliştirilmiş çoklu görev yöneticisi |
| iPadOS 16 | 2022 | Stage Manager, harici 6K monitör |
| iPadOS 17 | 2023 | Etkileşimli widget'lar, Kilit Ekranı |
| iPadOS 18 | 2024 | Hesap Makinesi Math Notes, Smart Script |
iPadOS iOS ile aynı XNU çekirdeği ve Darwin'i temel alır, ancak birden çok pencere ve isteğe bağlı ekran boyutlarına uyarlanmış değiştirilmiş bir UIKit kabuğu kullanır. Temel mimari fark, iOS 13'te tanıtılan UIScene desteğidir.
iPadOS'ta her pencere (Split View'dekiler dahil) kendi yaşam döngüsüne sahip ayrı bir UISceneSession'dır. Bir uygulamanın tek bir UIWindowScene'e sahip olduğu iPhone'un aksine, iPad'de bir uygulamanın birden çok UIScene'i (birden çok pencere, Slide Over, Stage Manager) olabilir. SceneDelegate her pencerenin durumunu bağımsız olarak yönetir.
import UIKit
import SwiftUI
/// iPadOS'ta birden çok pencere desteği için 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 }
// Tablet gezintisi için UISplitViewController oluşturma
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
}
// Pencere boyutu değişikliğine uyum (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 stiliyle UISplitViewController aynı anda üç sütun görüntüler: kenar çubuğu (gezinme), birincil (liste) ve ayrıntı (içerik). Kompakt moda (başka bir uygulamayla Split View) geçerken, UIKit sütunları otomatik olarak bir gezinme yığınına daraltır. Geliştirici bu davranışı manuel olarak yönetmez — UIKit düzeni traitCollection aracılığıyla uyarlar.
iPadOS şunları sunar: Files (USB-C/Thunderbolt) aracılığıyla harici depolama desteği, öğe inceleme özellikli Safari terminal modu, UIKeyCommand aracılığıyla klavye kısayolları, sistem indirme yöneticisi, uygulamalar arasında sürükle ve bırak ve yeniden boyutlandırılabilir pencere ile Picture in Picture.
Çoklu görev, iPadOS'un iOS'tan temel olarak ayıran önemli bir özelliğidir. Kullanıcı tek bir ekranda birden çok uygulamayla aynı anda çalışabilir. Geliştirici, uygulamanın herhangi bir çoklu görev modunda doğru şekilde çalışmasını sağlamalıdır.
Split View, iPad ekranını iki uygulama arasında 50/50 veya 33/67 oranında böler. Her uygulama kendi belleği ve yaşam döngüsüyle kendi UISceneSession'ını alır. Ekran genişliği 600 puntodan az olduğunda, UIKit uygulamayı zorla kompakt yatay size class'a geçirir. Uygulama bu değişikliği doğru şekilde ele almalıdır.
Slide Over, etkin uygulamanın üzerinde yüzen bir penceredir (genişlik 320 punto). Slide Over'daki bir uygulama kompakt yatay size class'a (.compact) geçer. Dar bir ekran için kullanıcı arayüzünü optimize etmek önemlidir. Slide Over'da uygulama, sağ kenardan kaydırarak veya dock aracılığıyla çağrılabilir. Kullanıcı Slide Over'ı Split View'a sürükleyebilir veya sağa kaydırarak kapatabilir.
Stage Manager (iPadOS 16+, M1 ve daha yenisi), isteğe bağlı boyutlarda örtüşen pencereler oluşturmaya izin veren bir pencere yöneticisidir. iPad ekranında en fazla 4 pencere ve harici monitörde en fazla 4 (toplam 8) pencere desteklenir. Uygulamalar, her yeni pencere için UISceneWillConnectNotification olayını alır. Stage Manager, yaşam döngüsü kurallarını değiştirir: arka plandaki bir pencere donmaz, sınırlı kaynaklarla çalışmaya devam eder.
| Mod | Pencere Sayısı | Pencere Boyutu | Size Class |
|---|---|---|---|
| Tam ekran | 1 | Ekranın %100'ü | Regular |
| Split View 50/50 | 2 | Ekranın %50'si | Regular (iPad Pro 12.9) veya Compact |
| Split View 33/67 | 2 | %33 / %67 | %33 için Compact |
| Slide Over | 1 + yüzen | 320 pt | Compact |
| Stage Manager | 1–4 | İsteğe bağlı | Boyuta bağlı |
Apple Pencil, eğim, basınç ve hover algılama desteği (iPad Pro M2+) ile Apple'ın aktif kalemidir. Kalem hareketi ile mürekkep görüntüleme arasındaki gecikme modele bağlı olarak 9–20 ms'dir. PencilKit, bir uygulamaya çizim entegre etmek için birincil framework'tür.
PKCanvasView, mürekkep, kurşun kalem, işaretleyici ve silgi desteğiyle hazır bir çizim yüzeyi sağlar. PKToolPicker, araç seçim panelidir. Geliştiricinin kontur oluşturmayı uygulaması gerekmez — PencilKit bunu Metal gölgelendiricileriyle donanım hızlandırmalı olarak yapar. Kalem rengi, kalınlığı ve opaklık özelleştirmesi mevcuttur.
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)
}
// Çizimi PKDrawing'e kaydetme (ikili biçim)
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 ile PKCanvasView hem Apple Pencil hem de parmak girişini kabul eder. PKToolPicker, kullanıcıya özel kullanıcı arayüzü yazmadan araç seçimi sunar. PKDrawing yüksek sıkıştırmalı ikili biçimde saklanır — bir saatlik çizim yaklaşık 5–10 MB yer kaplar.
Scribble (iPadOS 14+), herhangi bir UITextField ve UITextView'da el yazısı yazmaya izin verir. Sistem, Neural Engine'ı kullanarak cihazda el yazısını tanır. ML modeli Latin ve Kiril alfabeleriyle çalışır. iOS 17+'da Scribble, otomatik düzeltme ve sonraki kelime tahminini destekler. Geliştiricinin kod eklemesi gerekmez — Scribble herhangi bir giriş alanıyla otomatik olarak çalışır.
iPadOS 17.4 ve Apple Pencil Pro ile başlayarak, geliştiriciler kalem ekrana yaklaştığında (12 mm'ye kadar) hover olayları alır. Olay konum, kuvvet ve azimut içerir. Uygulamalar: çizim uygulamalarında fırça temas noktasının önizlemesi, araç önizlemesi, dokunmadan önce görsel geri bildirim.
Uyarlanabilir arayüz iPad uygulamaları için zorunlu bir gerekliliktir. iPad, farklı ekran boyutlarında (8,3"–13") ve çoklu görev modlarında çalışır. UIKit, otomatik uyarlama için Size Classes (yatay: .regular/.compact, dikey: .regular/.compact) ve UISplitViewController sağlar.
Size Classes, kullanılabilir alanı tanımlayan bir soyutlamadır. Tam ekran modunda iPad'de her iki eksen de .regular'dir. Split View'da (%50), yatay sınıf iPad mini veya iPad Air'de .compact olabilir. Auto Layout ve UICollectionViewCompositionalLayout ile oluşturulan tüm popüler düzenler otomatik olarak uyarlanır. Özel uyarlama, traitCollectionDidChange geçersiz kılınarak yapılır.
import SwiftUI
/// Size Classes kullanarak iPad için uyarlanabilir düzen
struct AdaptiveContentView: View {
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
@Environment(\.verticalSizeClass) private var verticalSizeClass
var body: some View {
if horizontalSizeClass == .regular && verticalSizeClass == .regular {
// Tablet modu: kenar çubuğu + içerik
NavigationSplitView {
SidebarView()
} detail: {
ContentGridView()
}
} else {
// Kompakt mod: yığın gezintisi
NavigationStack {
ContentGridView()
}
}
}
}
/// Uyarlanabilir ızgara örneği: iPad'de 3 sütun, iPhone'da 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()
}
}
}Örnekte, NavigationSplitView yalnızca horizontalSizeClass == .regular (tam ekran iPad) olduğunda kullanılır. NavigationStack kompakt modda kullanılır. Izgara sütun sayısı (3'e karşı 2) da Size Classes'a bağlı olarak değişir. Çoklu görev modu değiştiğinde her şey otomatik olarak güncellenir.
UIKit, üç stille UISplitViewController sağlar: .doubleColumn (kenar çubuğu + ayrıntı), .tripleColumn (kenar çubuğu + birincil + ayrıntı) ve .single. iPadOS 16+'da, size class değiştiğinde splitViewController otomatik olarak stiller arasında geçiş yapar. Geliştirici her sütun için viewControllers ayarlar, UIKit görünürlüğü yönetir.
iPadOS SDK, tüm iOS framework'lerinin yanı sıra yalnızca iPad'de bulunan API'leri içerir. Aşağıda önemli iPad'e özel yetenekler verilmiştir.
iPadOS, uygulamalar arasında ve bir uygulama içinde sürükle ve bırakmayı destekler. UIDragInteraction ve UIDropInteraction, metin, resim, dosya ve özel nesnelerin sürüklenmesine izin verir. Sürükle ve bırak, çoklu dokunmayla aynı anda çalışır: kullanıcı farklı parmaklarla birden çok öğeyi sürükleyebilir. SwiftUI'de .onDrag ve .onDrop değiştiricileri kullanılır.
Bir klavye bağlandığında (Magic Keyboard, Smart Keyboard), UIKeyCommand kısayol eklemeye izin verir. iPadOS 17+'da, Cmd basılı tutulduğunda klavye kısayolları görüntülenir. Apple standart kombinasyonları desteklemeyi önerir: ⌘C (kopyala), ⌘V (yapıştır), ⌘F (bul), ⌘N (yeni belge).
iPadOS 17+, 6K'ya kadar (Pro Display XDR) yerel çözünürlüğe sahip harici monitörleri destekler. Bir uygulama, ayrı bir oturum tanımlayıcısına sahip UIWindowScene aracılığıyla harici bir ekranda içerik görüntüleyebilir. Stage Manager, yeniden boyutlandırılabilir boyutlarla harici bir monitöre en fazla 4 pencere yerleştirmeye izin verir.
| API | Amaç | iOS'ta Mevcut |
|---|---|---|
| UISplitViewController | Çok sütunlu gezinme | Evet |
| PencilKit | Apple Pencil çizimi | Hayır |
| UIDragInteraction | Sürükle ve bırak | Evet (yalnızca uygulama içinde) |
| UIKeyCommand | Klavye kısayolları | Evet (yalnızca harici klavye) |
| UIScene | Çoklu pencere modu | Evet (yalnızca iPad) |
| UIPencilInteraction | Apple Pencil çift dokunma | Hayır |
| PDFKit | PDF görüntüleme ve not alma | Evet |
iPadOS geliştirme, UI/UX, performans ve test konusunda özel bir yaklaşım gerektirir. iPhone'da affedilebilir hatalar, daha büyük ekran ve çoklu görev nedeniyle iPad'de kritik hale gelir.
iPad, 16 GB'a kadar birleşik belleğe sahip M serisi yongalar (M1, M2, M4) kullanır. Güçlü donanıma rağmen, Split View veya Slide Over'daki bir uygulama kaynakları başka bir uygulamayla paylaşır. Bellek baskısı iPhone'dan daha yüksektir. Görüntü sıkıştırma, koleksiyonların yavaş yüklenmesi ve Instruments Allocations aracılığıyla profilleme kullanın. 16 GB ile iPad Pro M4, masaüstü sınıfı uygulamaları (Final Cut Pro, Logic Pro) çalıştırabilir.
Çoğu iPad kullanıcısı harici klavye kullanır. Arayüz tamamen klavyeyle gezilebilir olmalıdır: alanlar arasında gezinmek için Sekme, seçili öğeyi etkinleştirmek için Boşluk, onaylamak için Enter. Full Keyboard Access için destek ekleyin — klavyeyle herhangi bir kullanıcı arayüzü öğesini kontrol etmeye izin veren bir sistem ayarı.
iPad simülatörü, çoklu görev davranışını tam olarak yeniden üretmez. Farklı modlarda gerçek bir cihazda test edin: ağır bir uygulamayla (20 sekmeli Safari) Split View, 4 pencereli Stage Manager, hızlı uygulama değiştirmeli Slide Over. Senaryoyu kontrol edin: kullanıcı uygulamayı Slide Over'dan açar, Split View'a sürükler, boyutunu değiştirir, kapatır — uygulama çökmemelidir.
// iPadOS'ta geçerli çoklu görev modunu kontrol etme
- (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 etkin");
}
if (isSlideOver) {
NSLog(@"Slide Over modu");
} else if (isFullScreen) {
NSLog(@"Tam ekran modu");
} else {
NSLog(@"Split View modu");
}
}Sıkça Sorulan Sorular
iPadOS, genişletilmiş çoklu göreve (Split View, Slide Over, Stage Manager), hover algılamalı Apple Pencil desteğine, indirme yöneticili masaüstü Safari'ye, yerel çözünürlüklü harici monitörlere ve USB-C aracılığıyla harici sürücülere erişim sağlayan Files dosya sistemine sahiptir.
Uygulama UISplitViewController kullanıyorsa Split View otomatik olarak desteklenir. Uygulama, size class değişikliklerini doğru şekilde ele almalıdır: kompakt moda geçerken ekran yığını için UINavigationController kullanın. Split View'ı açıkça reddetmek için Info.plist'te UIRequiresFullScreen = YES belirtin.
PencilKit kullanın: çizim yüzeyi için PKCanvasView ve araç seçimi için PKToolPicker. Özel kalem girişi işleme için — .hover türünde UIEvent ve çift dokunma için UIPencilInteraction. Apple Pencil Pro gecikmesi 9 ms, önceki nesil — 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). Uyarlama için Size Classes ve Auto Layout kullanın. Thunderbolt ile 6K'ya kadar harici monitörler. Stage Manager, 8 pencereye kadar (iPad'de 4 + harici monitörde 4) destekler.
iPadOS 17+, USB-C/Thunderbolt ile 6K'ya kadar yerel çözünürlüğe sahip harici monitörleri destekler. Bir uygulama, kendi yaşam döngüsüne sahip ayrı bir UIWindowScene aracılığıyla harici bir monitörde içerik görüntüleyebilir. Stage Manager, harici bir monitörde en fazla 4 pencereyi destekler.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.