EduFlow

الوحدة 2 · التخطيط

التكيّف مع أحجام الشاشات المختلفة

18 دقراءة 4 درتّب الخطوات

الدرس في لمحة

اجمع بين الـ constraints للعناصر المثبّتة والـ Auto layout للمحتوى، لتتكيّف شاشة واحدة من Steady من الهاتف الصغير إلى الكبير، واختبرها بنسخ مغيّرة الحجم ومحتوى صعب يختبر حدود التخطيط.

  1. 1نوعان من العناصر على الشاشة
  2. 2احترم مناطق النظام
  3. 3المحتوى ثنائي البعد: الـ Grid
  4. 4طقس تغيير الحجم

لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.

سيعمل Steady على هواتف يتراوح عرضها بين نحو 360 و440 نقطة، والارتفاعات تتفاوت أكثر من ذلك. تصميم شاشة منفصلة لكل حجم فخّ في الصيانة: غيّر صف العادة في واحدة وعليك أن تتذكّر تغييره في أربع أخرى. الهدف شاشة واحدة تتكيّف، مبنية من القطع التي لديك أصلًا.

نوعان من العناصر على الشاشة

انظر إلى شاشة Today وصنّف أجزاءها إلى نوعين.

عناصر مثبّتة على الشاشة: شريط التبويبات في الأسفل، وزر الإضافة العائم في الزاوية. يجب أن تبقى ملتصقة بحافّة مهما فعل المحتوى. هذه مهمّة الـ constraints (الدرس 1.4).

عناصر تتدفّق: الترويسة، وكتلة التقدّم، وقائمة العادات. تتراصّ واحدة بعد الأخرى، وتطول القائمة مع كل عادة. هذه مهمّة الـ Auto layout (الدرسان 2.1 و2.2).

البنية الناتجة بسيطة وتعمل مع معظم شاشات التطبيقات:

frame شاشة Today هو frame عادي. داخله frame اسمه Content يستخدم Auto layout عموديًا ويضمّ الترويسة والتقدّم وقائمة العادات؛ وهو مقيّد يسارًا ويمينًا وأعلى وأسفل. شريط التبويبات مقيّد يسارًا ويمينًا مع الأسفل، وزر الإضافة مقيّد يمينًا مع الأسفل. Today (frame بلا Auto layout) Content: ‏Auto layout عمودي Header Progress Habit list Tab bar Content constraints: L+R, Top+Bottom Add button constraints: Right, Bottom Tab bar constraints: L+R, Bottom
frame شاشة واحد، ونظاما تخطيط

الـ frame الخاص بالشاشة نفسها بلا Auto layout. داخله يستخدم frame الـ Content ‏Auto layout عموديًا، وله الـ constraints ‏Left and right, Top and bottom، فيملأ دائمًا المساحة بين شريط الحالة وشريط التبويبات. شريط التبويبات وزر الإضافة إخوة لـ Content ولهما constraints على الحوافّ. وداخل Content، كل شيء عرضه Fill container، فتتمدّد الصفوف مع الشاشة.

احترم مناطق النظام

الهواتف الحديثة تحجز مساحة في الأعلى لشريط الحالة وفتحة الكاميرا، وفي الأسفل لمؤشّر الشاشة الرئيسية (home indicator). المحتوى تحتها صعب القراءة أو مستحيل النقر. أضف padding في أعلى frame الـ Content وفي أسفل شريط التبويبات حتى لا يقع هناك شيء مهم. الأحجام الدقيقة تختلف بين الأجهزة، فخذها من الـ UI kits الرسمية من Apple أو Google في Figma Community بدل التخمين.

المحتوى ثنائي البعد: الـ Grid

تعرض شاشة Habit detail أربع بطاقات إحصاءات: الـ streak الحالي، وأفضل streak، ونسبة الإنجاز، وإجمالي مرّات التسجيل. على الهاتف تجلس في عمودين؛ وعلى الجهاز اللوحي، أربعًا في صف.

وقت كتابة هذا الدرس، للـ Auto layout ‏flow من نوع Grid لهذا الغرض بالضبط. الـ frame الشبكي بـ Auto layout له عدد من الأعمدة والصفوف، وفجوات بينها، وأبناء يمكن أن يمتدّوا على أكثر من خلية. اضبط frame الإحصاءات على عمودين بفجوات 16 px (مطابقة للـ gutter في الـ Layout guide) في الهاتف؛ وفي نسخة الجهاز اللوحي، غيّره إلى 4 أعمدة. فتُرتَّب البطاقات الأربع نفسها من جديد دون إعادة رسمها.

الـ Wrap (الدرس 2.2) سينقل البطاقات إلى أسطر جديدة أيضًا، لكن مع الـ Wrap تحتفظ كل بطاقة بعرضها، فتحصل على بقايا غير منتظمة. أما الـ Grid فيُبقي الأعمدة متساوية، وهذا ما تحتاجه لوحة إحصاءات.

طقس تغيير الحجم

قبل أن تقبل صوفيا أي شاشة، تُجري الاختبار نفسه، ويجب أن تفعل مثلها:

  1. كرّر frame الشاشة مرّتين.
  2. غيّر عرض إحدى النسختين إلى 360 والأخرى إلى 440، واضبط الارتفاعات على هاتف قصير وآخر طويل.
  3. اقرأ كل نسخة من الأعلى إلى الأسفل. ابحث عن التداخلات، والقصّ غير المقصود، والعناصر الطافية في منتصف الشاشة، والفجوات التي كبرت بشكل غريب.
  4. أصلح الأصل، لا النسخ. واحذف النسخ حين ينجح الأصل.

ثم اختبر المحتوى تحت الضغط، لأن المحتوى يكسر تخطيطات أكثر مما تكسرها العروض. استخدم اسم عادة من 40 حرفًا، وstreak من أربعة أرقام، وقائمة فارغة (“No habits yet”). وأخيرًا، كبّر كل text style بنحو 30% في نسخة. كثيرون يضبطون حجم نص أكبر في إعدادات هواتفهم، والصف الذي لا يعمل إلا عند 17 px سينكسر عندهم أولًا.

انتهى القسم 2: شاشاتك تتراصّ وتتمدّد وتلتفّ وتثبت بشكل صحيح. في القسم 3 تتوقّف عن إعادة بناء صف العادة في كل شاشة، وتحوّله إلى component.

أهم النقاط

  • استخدم الـ constraints للعناصر المثبّتة على حوافّ الشاشة (شريط التبويبات، الزر العائم) والـ Auto layout للمحتوى الذي يتدفّق.
  • صمّم على عرض متوسط واحد، ثم أثبت أن الشاشة تعمل عند أصغر عرض وأكبر عرض تدعمهما.
  • أبعد المحتوى عن منطقتي شريط الحالة ومؤشّر الشاشة الرئيسية، وخذ أحجامهما الدقيقة من UI kit رسمي للمنصّة.
  • الـ Grid في الـ Auto layout يتعامل مع المحتوى ثنائي البعد مثل بطاقات الإحصاءات، ويمكن أن يتغيّر عدد الأعمدة بين الـ breakpoints.
  • اختبر تحت الضغط بنصوص طويلة وأحجام خط أكبر وحالات فارغة، لأن المحتوى الحقيقي يكسر التخطيطات أكثر مما يكسرها عرض الشاشة.

قراءات إضافية

تحقّق من فهمك

3 أسئلة

السؤال 1 من 3

شاشة Today في Steady عبارة عن frame عمودي كبير واحد بـ Auto layout يضمّ الترويسة والقائمة وشريط التبويبات. في هاتف طويل ينتهي شريط التبويبات في منتصف الشاشة، تحت آخر عادة مباشرة. لماذا؟

السؤال 2 من 3

ما أكفأ طريقة للتحقّق من أن شاشة تعمل عبر أحجام الهواتف المختلفة؟

السؤال 3 من 3

في شاشة Habit detail، تجلس أربع بطاقات إحصاءات في عمودين على الهواتف. وعلى الأجهزة اللوحية تريدها أربعًا في صف واحد. أيّ أداة تناسب أكثر؟

تدريب

رتّب الخطوات

اجعل شاشة Today متجاوبة

لديك شاشة Today ثابتة وُضع كل شيء فيها يدويًا. رتّب هذه الخطوات بالترتيب الذي ستتّبعه لتجعلها تتكيّف من هاتف بعرض 360 px إلى آخر بعرض 440 px، بالطريقة التي تتّبعها صوفيا.

استخدم أزرار الأسهم لإعادة الترتيب.

  1. 1لُفّ الترويسة والتقدّم وقائمة العادات في frame عمودي بـ Auto layout اسمه Content.
  2. 2اضبط عرض الصفوف والنصوص داخل Content على Fill container.
  3. 3أصلح ما انكسر في الشاشة الأصلية، ثم احذف نسخ الاختبار.
  4. 4كرّر الشاشة وغيّر عرض النسخ إلى 360 و440 px.
  5. 5اضبط الـ constraints (‏Content على Left and right وTop and bottom؛ وشريط التبويبات على Left and right وBottom؛ وزر الإضافة على Right وBottom)، ثم اسحب حافّة الشاشة لتوسيعها وتأكّد أن الصفوف تتمدّد معها.
  6. 6صمّم الشاشة بعرض متوسط مثل 393 px.
  7. 7اختبر النسخ تحت الضغط باسم عادة طويل، وقائمة فارغة، ونص أكبر بنحو 30%.