EduFlow

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

تغيير الحجم: Hug وFill وFixed وWrap

20 دقراءة 4 داختر بحكمة

الدرس في لمحة

تحكّم في كيفية تحديد الـ frames بـ Auto layout وأبنائها لأحجامهم عبر Hug contents وFill container وFixed، واضبط حدودًا دنيا وقصوى، واجعل الشرائح تلتفّ إلى أسطر جديدة، وأخرج الشارات من الـ flow.

  1. 1Hug وFill وFixed
  2. 2الحدّ الأدنى والأقصى
  3. 3الـ Wrap
  4. 4إخراج طبقة من الـ flow

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

صار صف العادة يرصّ نفسه، لكن اختبره بطريقة صوفيا: اسحب frame شاشة Today ليصبح أعرض. تبقى الصفوف على عرضها القديم، تاركة شريطًا فارغًا من الشاشة على اليمين. اسحبه ليصبح أضيق فتسقط أزرار التعليم خارج الحافّة. حُلّت مشكلة التراصّ؛ أما الأحجام فلا.

في الـ Auto layout لكل طبقة سلوكان للحجم، واحد للعرض وواحد للارتفاع. اضبطهما بشكل صحيح وسيعمل الصف نفسه على أي هاتف، وبأي لغة، ومع أي اسم عادة.

Hug وFill وFixed

تضبط الحجم من عناصر التحكم في العرض والارتفاع في الشريط الجانبي الأيمن. هناك ثلاثة خيارات.

Hug contents يجعل الـ frame بحجم أبنائه مع الـ padding بالضبط. الشريحة التي تحتضن محتواها تكبر حين تتغيّر تسميتها من “Daily” إلى “Weekends”. الـ frames والنصوص وحدها يمكنها الاحتضان، لأنها وحدها لها محتوى.

Fill container يجعل الابن يأخذ كل المساحة المتاحة في أبيه ذي الـ Auto layout على ذلك المحور. وإذا كان أخوان كلاهما على Fill، يتقاسمان المساحة بالتساوي.

Fixed يضبط حجمًا دقيقًا لا يتغيّر أبدًا. الأيقونات وزر التعليم ثابتة على 32 × 32 لأن هدف النقر في زر التعليم يجب ألّا يكبر أو يصغر مع النص المجاور له.

ثلاث نسخ من صف. حين تكون كومة النصوص على Hug، يجلس زر التعليم مباشرة بعد النص. وعلى Fill، تتمدّد الكومة ويجلس الزر عند الحافّة اليمنى. وعلى Fixed، تكون الكومة بعرض محدّد ويُقصّ الاسم الطويل. Hug Read Fill Read Fixed Read 20 pages be… Fill يدفع الزر إلى الحافّة؛ وFixed يقصّ الأسماء الطويلة.
صف العادة نفسه مع ثلاثة خيارات لحجم كومة النصوص

إعدادات صف العادة في Steady هي:

الطبقة العرض الارتفاع
Habit row Fill container Hug contents
Icon وCheck button Fixed 32 Fixed 32
Text stack Fill container Hug contents
Habit name وStreak Fill container Hug contents

اقرأه من الخارج إلى الداخل. الصف يملأ عرض القائمة. وداخله، تملأ كومة النصوص كل ما تتركه الأيقونة والزر، فيندفع الزر إلى الحافّة اليمنى. واسم العادة يملأ عرض الكومة ويحتضن ارتفاعها، فيلتفّ الاسم الطويل إلى سطر ثانٍ ويزداد ارتفاع الصف ليتّسع له. هذا بالضبط السلوك الذي تريده على هاتف بعرض 375 px.

يفرض Figma قاعدة واحدة نيابة عنك: لا يمكن للأب أن يحتضن ابنًا يملؤه على المحور نفسه، لأن كلًّا منهما سينتظر قياس الآخر. إذا ضبطت ابنًا على Fill container، يحوّل Figma الأب من Hug إلى Fixed على ذلك المحور.

الحدّ الأدنى والأقصى

قد ينتج Fill وHug أحجامًا سخيفة في الحالات القصوى. الزر بعرض كامل يبدو جيدًا على الهاتف ومضحكًا بعرض 1,000 px على جهاز لوحي. والشريحة التي تحتضن تسمية من حرف واحد قد تصبح أضيق من رأس الإصبع.

تضع خيارات الحدّ الأدنى والأقصى للعرض والارتفاع (تجدها في القوائم المنسدلة للعرض والارتفاع) هذه الحدود. يستخدم Steady:

  • زر Save habit: ‏Fill container، مع max width 480، فيتوقّف عن النمو على الأجهزة اللوحية.
  • الشريحة: Hug contents، مع min width 64، فتبقى التسميات القصيرة هدفًا مريحًا للمس.
  • حقل النص: Fill container، مع min width 200، فلا ينهار أبدًا في تخطيط ضيّق.

الـ Wrap

شرائح التكرار في لوحة New habit مصفوفة أفقيًا. “Daily, Weekdays, Weekends, Custom” تتّسع عند 393 px لكن ليس عند 320 px أو بالألمانية. فعّل Wrap للصف، فتنتقل الشرائح التي لا تتّسع إلى سطر جديد بدل أن تفيض. وقت كتابة هذا الدرس، يتيح لك الـ frame الملتفّ ضبط المسافة بين الأسطر بشكل منفصل عن الـ gap بين العناصر؛ استخدم الـ 8 px نفسها لتشكّل الشرائح شبكة منتظمة.

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

إخراج طبقة من الـ flow

أحيانًا يجب ألّا يشارك ابن واحد في الـ flow أصلًا: شارة لهب صغيرة على زاوية أيقونة العادة، أو نقطة تشير إلى تذكير غير مقروء. حدّده وفعّل Ignore auto layout (كان اسمه absolute position حتى وقت قريب، لذا تستخدم الشروحات القديمة ذلك الاسم). تبقى الطبقة داخل الـ frame لكنها تتوقّف عن التأثير في إخوتها، وتضعها بالـ constraints، هنا Right وTop، فتلتصق بالزاوية حين يتغيّر حجم الأيقونة.

صارت صفوفك تتكيّف مع العرض والمحتوى. في الدرس التالي تمنح كل تلك الفجوات والـ paddings نظامًا، فتصبح 12 و16 و24 قرارات بدل أن تكون تخمينات.

أهم النقاط

  • لكل طبقة في الـ Auto layout سلوك للعرض وآخر للارتفاع؛ Hug contents يتبع الأبناء، وFill container يأخذ المساحة المتاحة في الأب، وFixed لا يتغيّر أبدًا.
  • لا يمكن للأب أن يحتضن (Hug) ابنًا يملؤه (Fill) على المحور نفسه، لذلك يحوّل Figma ذلك الأب إلى Fixed.
  • الحدّ الأدنى والأقصى للعرض يمنعان الـ components من أن تصبح ضيّقة أو عريضة بشكل سخيف في الشاشات غير المعتادة.
  • خيار Wrap يتيح للمحتوى الأفقي مثل الشرائح أن ينتقل إلى سطر جديد بدل أن يفيض.
  • خيار Ignore auto layout يخرج ابنًا واحدًا من الـ flow لتحدّد موضعه بالـ constraints، وهذا يناسب الشارات والنقاط العائمة.

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

تحقّق من فهمك

4 أسئلة

السؤال 1 من 4

يجب أن يمتدّ الزر الأساسي “Save habit” على عرض اللوحة في أي هاتف، مع بقاء ارتفاعه الطبيعي. أيّ الإعدادات تناسب؟

السؤال 2 من 4

داخل صف العادة، كومة النصوص مضبوطة على Hug contents. في هاتف عريض يجلس زر التعليم ملاصقًا لاسم قصير بدل أن يكون على الحافّة اليمنى. ما الإصلاح؟

السؤال 3 من 4

ضبطت عرض بطاقة على Hug contents، ثم ضبطت ابنًا داخلها على Fill container على المحور نفسه. ماذا يفعل Figma؟

السؤال 4 من 4

يعرض Steady شارة لهب صغيرة تتداخل مع الزاوية العلوية اليمنى لأيقونة العادة. كيف تبنيها داخل frame الأيقونة الذي يستخدم Auto layout؟

تدريب

اختر بحكمة

اجعل لوحة New habit تصمد في أي شاشة

سجّل فريق ضمان الجودة (QA) ثلاثة أخطاء على لوحة New habit: على هاتف بعرض 320 px تخرج الشرائح عن الحافّة (انظر الرسم)، ومفتاح Reminder يلتصق بتسميته بدل أن يجلس عند الحافّة اليمنى، وعلى iPad يتمدّد زر Save habit حتى عرض 900 px.

:::figure لوحة New habit على هاتف بعرض 320 px

لوحة سفلية ضيّقة. حقل الاسم يتّسع. شرائح التكرار الأربع تتجاوز الحافّة اليمنى للّوحة. تسمية Reminder يليها مفتاح التبديل مباشرة بدل أن يجلس المفتاح عند الحافّة اليمنى. زر Save habit يتّسع. New habit Habit name Daily Weekdays Weekends Custom Reminder Save habit :::

اللوحة frame عمودي بـ Auto layout وعرضه مضبوط على Fill container. اختر كل تغيير يصلح أحد هذه الأخطاء إصلاحًا سليمًا.

اجعل لوحة New habit تصمد في أي شاشة