0Pricing
Swift Academy · درس

‏GeometryReader للتخطيطات المتكيفة

اقرؤوا هندسة العرض الأب لبناء واجهات متناسبة ومتكيفة مع الجهاز.

‏GeometryReader للتخطيطات المتكيفة درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

مرحبًا

تقرأ `GeometryReader` الحجم المتاح من العنصر الأب، مما يتيح لك إنشاء تخطيطات متناسبة مع أبعاد الشاشة أو الحاوية.

الاستخدام الأساسي

```swift GeometryReader { geo in Text("Width: \(Int(geo.size.width))") .frame(width: geo.size.width * 0.8) } ```

خصائص GeometryProxy

توفر `GeometryProxy` ما يلي: • `size: CGSize` — العرض والارتفاع المتاحان • `safeAreaInsets: EdgeInsets` — منطقة الأمان الخاصة بالنظام • `frame(in:)` — إطار العنصر في مساحة إحداثيات محددة

تحديد الحجم بشكل متناسب

```swift GeometryReader { geo in HStack(spacing: 0) { Color.blue.frame(width: geo.size.width * 0.6) Color.green } } ```

مساحات الإحداثيات

```swift GeometryReader { outer in VStack { GeometryReader { inner in let f = inner.frame(in: .named("outer")) Text("y: \(Int(f.minY))") } } } .coordinateSpace(name: "outer") ```

منطقة الأمان

```swift GeometryReader { geo in VStack { Spacer() Text("Bottom safe: \(Int(geo.safeAreaInsets.bottom))") .padding(.bottom, geo.safeAreaInsets.bottom) } } ```

تأثير التمرير المتوازي

```swift ScrollView { ForEach(items) { item in GeometryReader { geo in let offset = geo.frame(in: .global).minY Image(item.image).offset(y: offset * 0.3) } } } ```

مفاتيح التفضيلات للتواصل في التخطيط

```swift struct HeightKey: PreferenceKey { static var defaultValue: CGFloat = 0 static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) { value = max(value, nextValue()) } } ``` استخدمها لإيصال أحجام العناصر الابنة إلى أعلى تسلسل العرض.

متى يجب تجنب GeometryReader

تملأ `GeometryReader` افتراضيًا المساحة المتاحة بالكامل — وقد تتسبب في كسر التخطيطات إذا استُخدمت بلا حذر. يُفضَّل استخدام `.frame(maxWidth:.infinity)` والمكدسات المرنة كلما أمكن.

البديل: بروتوكول Layout

قدّمت Swift 5.7+ بروتوكول `Layout` لإنشاء خوارزميات تخطيط مخصصة بالكامل من دون التكلفة الإضافية لـ GeometryReader.

تحقق سريع

ما الذي تحتويه `GeometryProxy.size`؟

مراجعة

أهم النقاط: • يقرأ `GeometryReader { geo in }` الحجم الذي يتيحه العنصر الأب • `geo.size` — العرض والارتفاع؛ و`geo.safeAreaInsets` — الهوامش الداخلية الخاصة بالنظام • `frame(in:)` — الموضع في مساحة إحداثيات مسماة أو عامة • استخدم PreferenceKeys لإيصال الأحجام إلى أعلى التسلسل • فضّل التخطيطات المرنة على GeometryReader كلما أمكن اكتملت الدورة! التالي: تدفق البيانات في SwiftUI.

الأسئلة الشائعة

هل درس «‏GeometryReader للتخطيطات المتكيفة» مجاني؟

نعم — نص درس «‏GeometryReader للتخطيطات المتكيفة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «‏GeometryReader للتخطيطات المتكيفة»؟

اقرؤوا هندسة العرض الأب لبناء واجهات متناسبة ومتكيفة مع الجهاز. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «‏GeometryReader للتخطيطات المتكيفة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات VStack وHStack وZStack
  2. ‏LazyVGrid وLazyHGrid
  3. معدِّلات Spacer وPadding وFrame
  4. ‏GeometryReader للتخطيطات المتكيفة
← العودة إلى Swift Academy