الكتابات/blog/2026/06
Blog9 يونيو 2026·6 دقيقة

Apple Liquid Glass في iOS 27: الدليل الشامل لاعتماد المطورين

أتقن تطبيق Liquid Glass من Apple في iOS 27 — واجهة برمجة SwiftUI وglassEffect وUIGlassEffect في UIKit وتحسينات WWDC 2026 وخطوات الاعتماد العملية للمطورين.

وصل تصميم Liquid Glass من Apple في iOS 26 وأحدث ثورة في تطوير التطبيقات. ومع انتهاء WWDC 2026، يجلب iOS 27 نسخة محسّنة لا يستطيع المطورون تأجيلها — إذ سيعطّل Xcode 27 أعلام التأجيل القديمة، مما يجعل اعتماد Liquid Glass إلزامياً للتطبيقات التي تستهدف أحدث SDK.

يغطي هذا الدليل كل ما تحتاجه: واجهات البرمجة الجديدة، ما الذي تغيّر في iOS 27، وكيفية اعتماد Liquid Glass دون كسر واجهة المستخدم الحالية.

ما هو Liquid Glass؟

Liquid Glass هو طبقة العرض الجيل القادم من Apple التي تستبدل الشفافية المسطحة بـتقنية العدسات المدعومة بـ Metal. بدلاً من تعتيم الخلفيات (نهج UIBlurEffect القديم)، تنكسر الضوء وتركّزه عبر المادة — مشابهاً لعدسة مكبّرة فعلية مضغوطة على طبقات محتوى.

تحت الغطاء، يخزّن النظام الخلفيات الثابتة لتجنب تدهور معدل الإطارات، ويطبّق الانكسار في الوقت الفعلي، ويسمح لأشكال الزجاج بـالدمج والتحوّل فيزيائياً في بعضها عند التقارب.

النتيجة البصرية: شريط تصفح عائم فوق المحتوى بعمق حقيقي، لا مجرد تعتيم.

ما الذي تغيّر في iOS 27

استخدمت Apple WWDC 2026 لمعالجة أكثر شكاوى المطورين والمستخدمين شيوعاً من iOS 26:

1. شريط تمرير الشدة

يحصل المستخدمون الآن على تحكم شامل في تعتيم Liquid Glass — من شفاف جداً إلى ملوّن بالكامل. هذا شريط تدريجي لا مفتاح تشغيل/إيقاف كما كان من قبل. التطبيقات التي تستخدم واجهات برمجة النظام تحصل عليه تلقائياً؛ التطبيقات المخصصة تحتاج مراجعة يدوية لضمان احترام تفضيل المستخدم.

2. إعادة دمج بحث شريط التبويب

تعود أزرار البحث إلى شريط التبويب في تطبيقات النظام (الموسيقى، التلفزيون، Podcasts، الأخبار، الصحة). إذا بنى تطبيقك حلولاً بديلة للتصفح بسبب إزالة بحث شريط التبويب في iOS 26، فيجب مراجعة تلك المكونات.

3. تحسينات إمكانية الوصول

تمت معالجة إخفاقات التباين والقراءة الموثّقة في iOS 26 بتحسين انتشار الخلفية. تقول Apple الآن إنها "تحدّث أسس بناء Liquid Glass لضمان قراءة استثنائية."

واجهة برمجة SwiftUI

الاستخدام الأساسي: .glassEffect()

أبسط مسار للاعتماد هو المُعدِّل .glassEffect():

Text("مرحباً، Liquid Glass!")
    .padding()
    .glassEffect()

التوقيع الكامل يدعم تخصيص الشكل والتحكم الشرطي:

func glassEffect<S: Shape>(
    _ glass: Glass = .regular,
    in shape: S = DefaultGlassEffectShape,
    isEnabled: Bool = true
) -> some View

الأنماط المتاحة: .regular، .clear، .identity

العناصر التفاعلية

استخدم .interactive() للأسطح القابلة للنقر — يضيف تأثيرات التحجيم والارتداد والبريق عند اللمس:

Button {
    saveDocument()
} label: {
    Text("حفظ")
        .padding()
        .foregroundStyle(.white)
}
.glassEffect(.regular.tint(.blue).interactive())

GlassEffectContainer

لفّ العناصر ذات الصلة في GlassEffectContainer لتفعيل التحوّل. معامل spacing يتحكم في عتبة الدمج — العناصر الأقرب من هذه المسافة تندمج فيزيائياً في شكل زجاجي واحد:

GlassEffectContainer(spacing: 20) {
    HStack(spacing: 16) {
        Button("الرئيسية") { }.padding().glassEffect()
        Button("الإعدادات") { }.padding().glassEffect()
        Button("الملف")     { }.padding().glassEffect()
    }
}

التحوّل السلس مع .glassEffectID

ادمج @Namespace مع .glassEffectID للانتقالات السينمائية:

struct ToolbarView: View {
    @State private var isExpanded = false
    @Namespace private var namespace
 
    var body: some View {
        GlassEffectContainer(spacing: 40) {
            HStack(spacing: 40) {
                Image(systemName: "pencil")
                    .frame(width: 80, height: 80)
                    .glassEffect()
                    .glassEffectID("pencil", in: namespace)
 
                if isExpanded {
                    Image(systemName: "eraser.fill")
                        .frame(width: 80, height: 80)
                        .glassEffect()
                        .glassEffectID("eraser", in: namespace)
                }
            }
        }
        Button("تبديل") {
            withAnimation { isExpanded.toggle() }
        }
    }
}

عند تغيير isExpanded، يتحوّل شكل الزجاج بسلاسة بين الحالتين بدلاً من الظهور أو الاختفاء بشكل مباشر.

واجهة برمجة UIKit

لتطبيقات UIKit، يُكشف Liquid Glass من خلال UIGlassEffect مُلفَّف في UIVisualEffectView:

let glassView = UIVisualEffectView()
let effect = UIGlassEffect()
 
UIView.animate(withDuration: 0.3) {
    glassView.effect = effect
}

يستخدم هذا رسوم متحركة materialize — يظهر الزجاج بومضة مميزة بدلاً من تلاشٍ عادي.

ملاحظة مهمة للقواعد البرمجية المختلطة: لا يتزامن UIGlassEffect و .glassEffect() في SwiftUI تلقائياً. إذا كان تطبيقك يمتد عبر كلا الإطارين، فادرس حدود GlassEffectContainer لضمان سلوك بصري متناسق عبر الجسر.

إمكانية الوصول

يساعد شريط الشدة على مستوى النظام، لكن يجب احترام تفضيلات إمكانية الوصول في الكود:

@Environment(\.accessibilityReduceTransparency) var reduceTransparency
@Environment(\.accessibilityReduceMotion) var reduceMotion
 
var body: some View {
    Text("المحتوى")
        .padding()
        .glassEffect(reduceTransparency ? .identity : .regular)
}

.identity يعرض سطحاً معتماً تماماً — لا زجاج ولا شفافية. هذا يلبّي متطلبات إمكانية الوصول عالية التباين.

متى تستخدم Liquid Glass (ومتى لا تستخدمه)

إرشادات Human Interface من Apple واضحة: Liquid Glass ينتمي إلى طبقة التصفح، لا طبقة المحتوى.

استخدمه في:

  • أشرطة التصفح وأشرطة التبويب
  • أشرطة الأدوات العائمة والعناصر التحكمية
  • أوراق الإجراءات والقوائم
  • التراكبات التي تعوم فوق المحتوى الأساسي

تجنبه في:

  • خلايا القوائم والجداول
  • الخلفيات ملء الشاشة
  • مناطق المحتوى القابلة للتمرير
  • طبقات الزجاج المتراكمة (تخلق عمقاً غير مقروء)
  • أي شيء يتطلب قراءة نص واضحة

القاعدة الذهبية: الزجاج يُأطر المحتوى، لا يُحلّ محله.

الاختبار على الأجهزة الفعلية

لا تعتمد على المحاكي لـ Liquid Glass. الإضاءة الانعكاسية وسلوك الحركة والعدسات لا تعرض بشكل صحيح في iOS Simulator. اختبر كل تفاعل زجاجي على جهاز فعلي — على الأقل iPhone 12 لضمانات أداء Metal.

انتبه بشكل خاص إلى:

  • الخلفيات الديناميكية (الصور الحية، الفيديوهات) كمحتوى خلف الزجاج
  • الانتقالات السريعة مع .glassEffectID
  • عرض الوضع الداكن لمتغيرات الزجاج الملوّن
  • سلوك وضع توفير الطاقة

مهام المطورين لـ iOS 27

  1. شغّل تطبيقك على بيتا iOS 27 — مكونات النظام تتحدث تلقائياً؛ التطبيقات المخصصة لا.
  2. ابحث في قاعدة الكود عن UIBlurEffect — تحتاج هذه الحالات إلى الهجرة إلى UIGlassEffect.
  3. راجع تطبيقات شريط التبويب — إذا عملت حول بحث شريط التبويب المفقود في iOS 26، قد تحتاج التراجع.
  4. اختبر شريط تمرير الشدة — تحقق من استجابة عناصر الزجاج المخصصة لدى تعديل المستخدم للشفافية.
  5. أضف حواجز إمكانية الوصول — لفّ الزجاج المخصص بفحوصات accessibilityReduceTransparency قبل أن يعطّل Xcode 27 أعلام التأجيل.

الخلاصة

Liquid Glass لم يعد اختيارياً. مع معالجة iOS 27 لمشكلات التباين وسهولة الاستخدام من السنة الأولى، تُشدّد Apple عقد التصميم: التطبيقات التي تريد أن تبدو أصيلة يجب اعتماده. البشرى الجيدة أن واجهة برمجة SwiftUI أنيقة حقاً — GlassEffectContainer يتعامل مع الجزء الصعب، و.glassEffectID يقدّم رسوم متحركة التحوّل التي تتطلب مئات الأسطر لبنائها من الصفر.

ابدأ بشريط التصفح، اختبر على الأجهزة الفعلية، واحترم شريط تمرير الشدة. هذا هو المسار لتطبيق Liquid Glass يشعر بأنه في مكانه الطبيعي على iOS 27.