PhotosUI في Swift: دليل شامل مع أمثلة عملية

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

PhotosUI في Swift: دليل شامل لاختيار الصور والفيديو

1. ما هو PhotosUI ولماذا تحتاجه؟

PhotosUI هو إطار عمل (Framework) من Apple يوفر واجهات مستخدم جاهزة للتعامل مع مكتبة الوسائط على الجهاز. وهو جزء من UIKit ويعمل كطبقة فوق إطار العمل الأقل مستوى Photos. المهمة الأساسية لـ PhotosUI هي منح المطور القدرة على تنفيذ وظيفة اختيار الصور والفيديو بسرعة وبشكل موحد، دون الحاجة للتعمق في منطق إدارة الأذونات المعقد أو التنقل بين الألبومات أو عرض الصور المصغرة.

لماذا تحتاج إليه؟ أولاً، يوفر وقتك. بدلاً من كتابة متصفح مكتبة وسائط خاص بك من الصفر، تحصل على واجهة جاهزة ومصقولة يعرفها المستخدمون بالفعل. ثانياً، الأمان والامتثال لإرشادات Apple. يتولى PhotosUI تلقائياً معالجة طلبات الوصول إلى المكتبة (عبر PHPhotoLibrary) ويعمل بشكل صحيح مع إصدارات iOS الجديدة، بما في ذلك دعم الخصوصية والوصول المحدود. ثالثاً، المرونة: يمكنك تخصيص المظهر، والسماح بالاختيار المتعدد، وتصفية الصور فقط أو الفيديو فقط، وحتى تكوين السلوك عند التحرير.

حالات الاستخدام الرئيسية: صور الملف الشخصي، إرفاق الصور بالرسائل، تحميل الفيديو إلى وسائل التواصل الاجتماعي، إنشاء الكولاجات، التكامل مع المرشحات والمحررات. PhotosUI مثالي لأي تطبيق يحتاج إلى الوصول إلى مكتبة وسائط المستخدم.

2. التثبيت

PhotosUI هو جزء من مكتبة iOS SDK القياسية. لا يتطلب استخدامه تثبيتاً عبر CocoaPods أو Swift Package Manager أو Carthage. كل ما عليك فعله هو استيراد الإطار إلى مشروعك.

ملاحظة مهمة: PhotosUI متاح بدءاً من iOS 8.0. ولكن لاستخدام جميع الإمكانيات الحديثة (مثل PHPickerViewController)، يُوصى باستخدام iOS 14+.

// استيراد الإطار
import PhotosUI

لا حاجة لأي أوامر إضافية في الطرفية. فقط أضف import PhotosUI إلى الملف الذي تخطط لاستخدام وظيفة اختيار الوسائط فيه.

3. البداية السريعة: مثال عملي بسيط

أسهل طريقة لعرض واجهة اختيار الصور للمستخدم هي استخدام PHPickerViewController (iOS 14+). يعمل هذا المتحكم في عملية منفصلة، مما يعزز الأداء والأمان.

مثال: زر على الشاشة، عند الضغط عليه يفتح منتقي الصور.

import UIKit
import PhotosUI

class ViewController: UIViewController, PHPickerViewControllerDelegate {

    @IBAction func selectPhotoTapped(_ sender: UIButton) {
        // 1. إنشاء تهيئة المنتقي
        var config = PHPickerConfiguration()
        config.selectionLimit = 1 // صورة واحدة
        config.filter = .images // الصور فقط

        // 2. إنشاء المتحكم
        let picker = PHPickerViewController(configuration: config)
        picker.delegate = self

        // 3. عرضه
        present(picker, animated: true)
    }

    // MARK: - PHPickerViewControllerDelegate
    func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
        dismiss(animated: true)

        guard let provider = results.first?.itemProvider else { return }

        // 4. تحميل UIImage
        if provider.canLoadObject(ofClass: UIImage.self) {
            provider.loadObject(ofClass: UIImage.self) { image, error in
                DispatchQueue.main.async {
                    // استخدام الصورة التي تم الحصول عليها
                    print("تم تحميل الصورة: \(String(describing: image))")
                }
            }
        }
    }
}                    

توصيات