iPadOS هو نظام تشغيل Apple لأجهزة iPad، المنفصل عن iOS في عام 2019. يراعي تطوير iPad الإمكانيات الفريدة: تعدد المهام Split View وStage Manager، إدخال Apple Pencil بزمن استجابة منخفض وSafar
أهم النقاط
iPadOS هو نظام تشغيل Apple لأجهزة iPad، تم إصداره لأول مرة في عام 2019 كفرع من iOS (الإصدار 13). قبل ذلك، كان iPad يستخدم نفس iOS المستخدم في iPhone. سمح فصل iPadOS لـ Apple بتقديم ميزات خاصة بالشاشة الكبيرة: تعدد المهام وسفاري سطح المكتب والسحب والإفلات ودعم الشاشات الخارجية.
يحافظ iPadOS على التوافق الكامل مع تطبيقات iOS: أي تطبيق iPhone يعمل على iPad في وضع القياس. ومع ذلك، تتطلب تجربة المستخدم عالية الجودة تكييفًا: استخدام Size Classes وUISplitViewController ودعم اختصارات لوحة المفاتيح. وفقًا لـ Apple (WWDC 2025)، 80% من الوقت على iPad يقضيه المستخدمون في إصدارات محسنة للأجهزة اللوحية بدلاً من الإصدارات المقاسة.
قدم iPadOS 13 (2019) Slide Over وSplit View. أضاف iPadOS 14 (2020) Scribble لقلم Apple Pencil وواجهة مضغوطة. قدم iPadOS 15 (2021) Quick Note وتحسينات في تعدد المهام. جلب iPadOS 16 (2022) Stage Manager ودعم الشاشات الخارجية. أضاف iPadOS 17 (2023) الأدوات التفاعلية وتخصيص شاشة القفل.
| إصدار iPadOS | السنة | الابتكار الرئيسي |
|---|---|---|
| iPadOS 13 | 2019 | Slide Over وSplit View وسفاري سطح المكتب |
| iPadOS 14 | 2020 | Scribble لقلم Apple Pencil والمكالمات المضغوطة |
| iPadOS 15 | 2021 | Quick Note ومدير تعدد مهام محسّن |
| iPadOS 16 | 2022 | Stage Manager وشاشة خارجية 6K |
| iPadOS 17 | 2023 | الأدوات التفاعلية وشاشة القفل |
| 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 يعرض ثلاثة أعمدة في وقت واحد: الشريط الجانبي (التنقل) والقائمة الأساسية (القائمة) والمحتوى (التفاصيل). عند الانتقال إلى الوضع المضغوط (Split View مع تطبيق آخر)، يقوم UIKit تلقائيًا بدمج الأعمدة في مكدس تنقل. لا يقوم المطور بإدارة هذا السلوك يدويًا — UIKit يكيّف التصميم من خلال traitCollection.
iPadOS يوفر: دعم التخزين الخارجي عبر Files (USB-C/Thunderbolt)، وضع طرفية Safari مع فحص العناصر، اختصارات لوحة المفاتيح عبر UIKeyCommand، مدير تنزيلات النظام، السحب والإفلات بين التطبيقات وصورة داخل صورة مع نافذة قابلة لتغيير الحجم.
تعدد المهام هو ميزة رئيسية لـ iPadOS تميزه بشكل جوهري عن iOS. يمكن للمستخدم العمل في وقت واحد مع عدة تطبيقات على شاشة واحدة. يجب على المطور ضمان عمل التطبيق بشكل صحيح في أي وضع تعدد مهام.
يقسم Split View شاشة iPad بين تطبيقين بنسبة 50/50 أو 33/67. يحصل كل تطبيق على UISceneSession خاصة به مع ذاكرة ودورة حياة خاصتين به. عندما يكون عرض الشاشة أقل من 600 نقطة، يجبر UIKit التطبيق على الحجم الأفقي المضغوط. يجب على التطبيق التعامل مع هذا التغيير بشكل صحيح.
Slide Over هو نافذة عائمة فوق التطبيق النشط (عرض 320 نقطة). يتحول التطبيق في Slide Over إلى حجم أفقي مضغوط (.compact). من المهم تحسين الواجهة للشاشة الضيقة. في 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 مع دعم الإمالة والضغط واكتشاف القرب (iPad Pro M2+). زمن الاستجابة بين حركة القلم وعرض الحبر هو 9–20 مللي ثانية حسب الطراز. PencilKit هو الإطار الرئيسي لدمج الرسم في التطبيق.
PKCanvasView يوفر سطح رسم جاهز مع دعم الحبر والقلم والعلامة والممحاة. PKToolPicker هو لوحة اختيار الأدوات. لا يحتاج المطور إلى تنفيذ عرض الخطوط — PencilKit يقوم بذلك عبر الأجهزة باستخدام Metal shaders. يتوفر تخصيص اللون والسمك والشفافية للقلم.
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 يمنح المستخدم اختيار الأدوات دون الحاجة إلى كتابة واجهة مخصصة. PKDrawing يُخزن في تنسيق ثنائي بضغط عالٍ — ساعة رسم تستهلك حوالي 5–10 ميجابايت.
Scribble (iPadOS 14+) يسمح بالكتابة اليدوية في أي UITextField وUITextView. يتعرف النظام على الكتابة اليدوية على الجهاز باستخدام Neural Engine. نموذج التعلم الآلي يعمل مع الحروف اللاتينية والسيريلية. في iOS 17+، يدعم Scribble التصحيح التلقائي والتنبؤ بالكلمة التالية. لا يحتاج المطور إلى إضافة كود — Scribble يعمل تلقائيًا مع أي حقل إدخال.
بدءًا من iPadOS 17.4 وApple Pencil Pro، يحصل المطورون على أحداث hover عندما يقترب القلم من الشاشة (حتى 12 مم). يحتوي الحدث على الموضع والقوة والسمت. التطبيقات: معاينة نقطة ملامسة الفرشاة في تطبيقات الرسم، معاينة الأداة، ردود فعل بصرية قبل اللمس.
الواجهة المتكيفة هي متطلب إلزامي لتطبيقات iPad. يعمل iPad بأحجام شاشة مختلفة (8.3"–13") وأوضاع تعدد مهام. يوفر UIKit Size Classes (أفقي: .regular/.compact، عمودي: .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 {
// وضع الجهاز اللوحي: شريط جانبي + محتوى
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 مقابل 2) يتغير أيضًا حسب Size Classes. كل شيء يتحدّث تلقائيًا عند تغيير وضع تعدد المهام.
UIKit يوفر UISplitViewController بثلاثة أنماط: .doubleColumn (شريط جانبي + تفاصيل) و.tripleColumn (شريط جانبي + رئيسي + تفاصيل) و.single. في iPadOS 16+، يتحول splitViewController تلقائيًا بين الأنماط عند تغيير size class. يحدد المطور viewControllers لكل عمود، وUIKit يدير الرؤية.
iPadOS SDK يشمل جميع أطر iOS بالإضافة إلى واجهات API المتاحة فقط على iPad. فيما يلي الإمكانيات الرئيسية الخاصة بـ iPad.
iPadOS يدعم السحب والإفلات بين التطبيقات وداخل التطبيق. UIDragInteraction وUIDropInteraction يسمحان بسحب النصوص والصور والملفات والكائنات المخصصة. يعمل السحب والإفلات بالتزامن مع اللمس المتعدد: يمكن للمستخدم سحب عدة عناصر بأصابع مختلفة. في 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 | السحب والإفلات | نعم (داخل التطبيق فقط) |
| UIKeyCommand | اختصارات لوحة المفاتيح | نعم (بلوحة مفاتيح خارجية فقط) |
| UIScene | وضع النوافذ المتعددة | نعم (iPad فقط) |
| UIPencilInteraction | النقر المزدوج لقلم Apple Pencil | لا |
| PDFKit | عرض وتعليقات PDF | نعم |
التطوير لـ iPadOS يتطلب نهجًا خاصًا في UI/UX والأداء والاختبار. الأخطاء التي تغتفر على iPhone تصبح حرجة على iPad بسبب الشاشة الأكبر وتعدد المهام.
iPad يستخدم رقائق سلسلة M (M1 وM2 وM4) بذاكرة موحدة تصل إلى 16 جيجابايت. على الرغم من الأجهزة القوية، التطبيق في Split View أو Slide Over يشارك الموارد مع تطبيق آخر. ضغط الذاكرة أعلى من iPhone. استخدم ضغط الصور والتحميل البطيء للمجموعات والتنميط عبر Instruments Allocations. iPad Pro M4 بسعة 16 جيجابايت يسمح بتشغيل تطبيقات بمستوى سطح المكتب (Final Cut Pro وLogic Pro).
معظم مستخدمي iPad يستخدمون لوحة مفاتيح خارجية. يجب أن تكون الواجهة قابلة للتنقل بالكامل عبر لوحة المفاتيح: Tab للتنقل بين الحقول وSpace لتنشيط العنصر المحدد وEnter للتأكيد. أضف دعم Full Keyboard Access — إعداد نظام يسمح بالتحكم في أي عنصر واجهة باستخدام لوحة المفاتيح.
محاكي 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 مع اكتشاف القرب وسفاري سطح المكتب مع مدير التنزيلات وشاشات خارجية بدقة أصلية ونظام ملفات 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. سوف نقدم لك النصح ونقترح أفضل حل.