iPadOS — سیستم عامل اپل برای آیپد است که در سال ۲۰۱۹ از iOS جدا شد. توسعه برای آیپد قابلیتهای منحصربهفردی را در نظر میگیرد: چندوظیفگی Split View و Stage Manager، ورودی Apple Pencil با تأخیر کم و Safari دسکتاپی.
نکات اصلی
iPadOS — سیستم عامل اپل برای آیپد است که اولین بار در سال ۲۰۱۹ به عنوان انشعابی از iOS (نسخه ۱۳) منتشر شد. قبل از آن، آیپد از همان iOS آیفون استفاده میکرد. جدا شدن iPadOS به اپل اجازه داد قابلیتهای خاص صفحه بزرگ را پیادهسازی کند: چندوظیفگی، Safari دسکتاپی، Drag & Drop و پشتیبانی از مانیتورهای خارجی.
iPadOS سازگاری کامل با برنامههای iOS را حفظ میکند: هر برنامه آیفون در iPad در حالت مقیاسبندی اجرا میشود. با این حال، برای تجربه کاربری باکیفیت، تطبیق لازم است: استفاده از Size Classes، UISplitViewController و پشتیبانی از میانبرهای صفحهکلید. طبق دادههای اپل (WWDC 2025)، ۸۰٪ زمان در iPad کاربران در نسخههای تبلتی سپری میکنند، نه نسخههای مقیاسشده.
iPadOS 13 (۲۰۱۹) Slide Over و Split View را آورد. iPadOS 14 (۲۰۲۰) Apple Pencil Scribble و UI فشرده را اضافه کرد. iPadOS 15 (۲۰۲۱) Quick Note و بهبودهای چندوظیفگی را معرفی کرد. iPadOS 16 (۲۰۲۲) Stage Manager و پشتیبانی از مانیتور خارجی را ارائه داد. iPadOS 17 (۲۰۲۳) ویجتهای تعاملی و شخصیسازی Lock Screen را اضافه کرد.
| نسخه iPadOS | سال | نوآوری کلیدی |
|---|---|---|
| iPadOS 13 | ۲۰۱۹ | Slide Over، Split View، Safari دسکتاپی |
| iPadOS 14 | ۲۰۲۰ | Scribble برای Apple Pencil، تماسهای فشرده |
| iPadOS 15 | ۲۰۲۱ | Quick Note، مدیر چندوظیفگی بهبودیافته |
| iPadOS 16 | ۲۰۲۲ | Stage Manager، مانیتور خارجی ۶K |
| iPadOS 17 | ۲۰۲۳ | ویجتهای تعاملی، Lock Screen |
| iPadOS 18 | ۲۰۲۴ | ماشین حساب 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 را بین دو برنامه به نسبت ۵۰/۵۰ یا ۳۳/۶۷ تقسیم میکند. هر برنامه UISceneSession خود را با حافظه و چرخه حیات خاص خود دریافت میکند. در عرض صفحه کمتر از ۶۰۰ نقطه، UIKit به طور اجباری برنامه را به size class فشرده افقی منتقل میکند. برنامه باید این تغییر را به درستی مدیریت کند.
Slide Over — پنجره شناور روی برنامه فعال (عرض ۳۲۰ نقطه). برنامه در Slide Over به size class فشرده افقی (.compact) منتقل میشود. بهینهسازی UI برای صفحه باریک مهم است. در Slide Over برنامه میتواند با کشیدن از لبه راست یا از طریق داک فراخوانی شود. کاربر میتواند Slide Over را به Split View بکشد یا با کشیدن به راست ببندد.
Stage Manager (iPadOS 16+، M1 و جدیدتر) — مدیر پنجرهای که امکان ایجاد پنجرههای همپوشان با اندازههای دلخواه را فراهم میکند. تا ۴ پنجره روی صفحه iPad و تا ۴ پنجره روی مانیتور خارجی (مجموعاً ۸) پشتیبانی میشود. برنامهها برای هر پنجره جدید رویداد UISceneWillConnectNotification را دریافت میکنند. Stage Manager قوانین چرخه حیات را تغییر میدهد: پنجره در پسزمینه مسدود نمیشود، بلکه با منابع محدود به کار ادامه میدهد.
| حالت | تعداد پنجره | اندازه پنجره | Size Class |
|---|---|---|---|
| تمام صفحه | ۱ | ۱۰۰٪ صفحه | Regular |
| Split View ۵۰/۵۰ | ۲ | ۵۰٪ صفحه | Regular (iPad Pro ۱۲.۹) یا Compact |
| Split View ۳۳/۶۷ | ۲ | ۳۳٪ / ۶۷٪ | Compact برای ۳۳٪ |
| Slide Over | ۱ + شناور | ۳۲۰ pt | Compact |
| Stage Manager | ۱–۴ | دلخواه | بستگی به اندازه دارد |
Apple Pencil — قلم فعال اپل با پشتیبانی از شیب، فشار و تشخیص نزدیکی (iPad Pro M2+). تأخیر بین حرکت قلم و نمایش جوهر بسته به مدل ۹–۲۰ میلیثانیه است. 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 در قالب باینری با درجه فشردهسازی بالا ذخیره میشود — یک ساعت نقاشی حدود ۵–۱۰ MB اشغال میکند.
Scribble (iPadOS 14+) امکان نوشتن دستی در هر UITextField و UITextView را فراهم میکند. سیستم با استفاده از Neural Engine نوشتار دستی را روی دستگاه تشخیص میدهد. مدل ML با الفبای لاتین و سیریلیک کار میکند. در iOS 17+ Scribble از تصحیح خودکار و پیشبینی کلمه بعدی پشتیبانی میکند. توسعهدهنده نیازی به افزودن کد ندارد — Scribble به طور خودکار هنگام وجود فیلد ورودی کار میکند.
از iPadOS ۱۷.۴ و Apple Pencil Pro، توسعهدهندگان هنگام نزدیک شدن قلم به صفحه (تا ۱۲ میلیمتر) رویدادهای hover دریافت میکنند. رویداد شامل موقعیت، نیروی فشار و آزیموت است. کاربرد: پیشنمایش نقطه تماس قلم در برنامههای نقاشی، پیشنمایش ابزار، بازخورد بصری قبل از لمس.
رابط تطبیقی — الزام اجباری برای برنامههای iPad است. iPad در اندازههای مختلف صفحه (۸.۳″–۱۳″) و حالتهای چندوظیفگی کار میکند. UIKit Size Classes (horizontal: .regular/.compact, vertical: .regular/.compact) و UISplitViewController را برای تطبیق خودکار فراهم میکند.
Size Classes — انتزاعی است که فضای موجود را تعیین میکند. در iPad در حالت تمام صفحه هر دو محور — .regular هستند. در Split View (۵۰٪) کلاس افقی ممکن است در iPad mini یا iPad Air به .compact تبدیل شود. تمام طرحهای محبوب ساختهشده بر 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()
}
}
}
}
/// نمونه شبکه تطبیقی: ۳ ستون در iPad، ۲ در 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 در حالت فشرده اعمال میشود. تعداد ستونهای شبکه (۳ در مقابل ۲) نیز بسته به 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 نمایش داده میشوند. اپل توصیه میکند از ترکیبهای استاندارد پشتیبانی کنید: ⌘C (کپی)، ⌘V (چسباندن)، ⌘F (جستجو)، ⌘N (سند جدید).
iPadOS 17+ از مانیتورهای خارجی با رزولوشن بومی تا ۶K (Pro Display XDR) پشتیبانی میکند. برنامه میتواند محتوا را روی صفحه خارجی از طریق UIWindowScene با شناسه جلسه جداگانه نمایش دهد. Stage Manager امکان قرار دادن تا ۴ پنجره با اندازههای قابل تغییر روی مانیتور خارجی را فراهم میکند.
| 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) با حافظه یکپارچه تا ۱۶ GB استفاده میکند. با وجود سختافزار قدرتمند، برنامه در Split View یا Slide Over منابع را با برنامه دیگر به اشتراک میگذارد. فشار حافظه بیشتر از iPhone است. از فشردهسازی تصاویر، بارگذاری تنبل مجموعهها و پروفایلسازی از طریق Instruments Allocations استفاده کنید. iPad Pro M4 با ۱۶ GB امکان اجرای برنامههای سطح دسکتاپ (Final Cut Pro، Logic Pro) را فراهم میکند.
اکثر کاربران iPad از صفحهکلید خارجی استفاده میکنند. رابط باید کاملاً از صفحهکلید قابل کنترل باشد: Tab برای پیمایش بین فیلدها، Space برای فعالسازی عنصر انتخابشده، Enter برای تأیید. پشتیبانی از Full Keyboard Access را اضافه کنید — تنظیم سیستمی که امکان کنترل هر عنصر UI را از صفحهکلید فراهم میکند.
شبیهساز iPad رفتار چندوظیفگی را به طور کامل بازتولید نمیکند. روی دستگاه واقعی در حالتهای مختلف آزمایش کنید: Split View با برنامه سنگین (Safari با ۲۰ برگه)، Stage Manager با ۴ پنجره، 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 با تشخیص نزدیکی، 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 — ۹ میلیثانیه، نسل قبلی — ۲۰ میلیثانیه.
iPad mini ۸.۳″ (۲۲۶۶×۱۴۸۸)، iPad Air ۱۰.۹″ (۲۳۶۰×۱۶۴۰)، iPad Pro ۱۱″ (۲۳۸۸×۱۶۶۸)، iPad Pro ۱۳″ M4 (۲۷۵۲×۲۰۶۴). برای تطبیق از Size Classes و Auto Layout استفاده کنید. مانیتورهای خارجی تا ۶K از طریق Thunderbolt. Stage Manager تا ۸ پنجره را پشتیبانی میکند (۴ در iPad + ۴ در مانیتور خارجی).
iPadOS 17+ از مانیتورهای خارجی از طریق USB-C/Thunderbolt با رزولوشن بومی تا ۶K پشتیبانی میکند. برنامه میتواند محتوا را روی مانیتور خارجی از طریق UIWindowScene جداگانه با چرخه حیات خاص خود نمایش دهد. Stage Manager تا ۴ پنجره را روی مانیتور خارجی پشتیبانی میکند.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.