יישום Dynamic Type (שינוי גודל גופן) ב-iOS

משתמשים עם לקויות ראייה מתקשים לעיתים קרובות לקרוא טקסט באפליקציה שאינה תומכת בהתאמת גודל הגופן. אנו מיישמים Dynamic Type באפליקציות iOS כדי להתאים את הממשק להגדרות האישיות של כל משתמש. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת נגישות ועד יישום ותמיכה מתמשכת.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
יישום Dynamic Type (שינוי גודל גופן) ב-iOS
בינוני
~2-3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

הטמעת Dynamic Type (קנה מידה של גופנים) ב-iOS

משתמש עם לקות ראייה פותח את האפליקציה שלך ואינו יכול לקרוא את הטקסט במהלך תהליך ההתחברות — הגופן קטן מדי. הוא נכנס להגדרות, מפעיל טקסט גדול יותר במקסימום, חוזר — והטקסט נשאר ללא שינוי. זו לא השערה: עד 30% ממשתמשי iOS מגדילים את גודל הגופן. Dynamic Type הוא המנגנון המערכתי שמתאים את גודל הטקסט להעדפות המשתמש. בלעדיו, אתה מאבד קהל ומסתכן בהפרת סעיף 4.2 של הנחיות סקירת ה-App Store.

אנחנו מפתחי מובייל עם ניסיון של 10+ שנים ב-iOS (Swift 5.9+, SwiftUI, UIKit). ב-5 השנים האחרונות הטמענו Dynamic Type ביותר מ-40 פרויקטים — מפינטק ועד אדטק. קבלו ייעוץ ובדיקת נגישות לאפליקציה שלכם.

Dynamic Type (קנה מידה של גופנים): למה זה חשוב לנגישות

לפי הנחיות הממשק האנושי של Apple, Dynamic Type הוא תכונת נגישות חיונית. בלעדיו, משתמשים עם לקויות ראייה אינם יכולים לקרוא תוכן בנוחות. סטטיסטיקות מראות שכ-30% ממשתמשי iOS מגדירים גודל גופן גדול יותר מברירת המחדל. למעשה, 95% מבדיקות הנגישות נכשלות ללא תמיכה מתאימה בקנה מידה של גופנים. התעלמות מ-Dynamic Type עולה לך בקהל הזה והיא סיבה נפוצה לדחיית אפליקציה מה-App Store.

כיצד להפעיל כראוי Dynamic Type (קנה מידה של גופנים)

UIKit

UIFont.preferredFont(forTextStyle: .body) — גופן מערכת עם תמיכה ב-Dynamic Type, מתקנה אוטומטית בעת שינוי הגדרות. הגדר adjustsFontForContentSizeCategory = true על UILabel, UITextField, UITextView כדי לאפשר תגובתיות בזמן אמת ללא הפעלה מחדש של האפליקציה.

לגופנים מותאמים אישית: UIFontMetrics(forTextStyle: .body).scaledFont(for: customFont). UIFontMetrics מתקנה את הגופן המותאם אישית באופן פרופורציונלי לטבלת המערכת עבור TextStyle שנבחר.

טעות נפוצה היא הגדרת גופן באמצעות UIFont(name: "CustomFont-Regular", size: 17) ללא יישום UIFontMetrics — זה מביא לגודל קבוע שמתעלם מקטגוריית גודל התוכן המועדפת על המשתמש. שימוש ב-Font.body יעיל פי 1.4 בשמירה על יישור קו הבסיס בהשוואה לקנה מידה ידני.

SwiftUI

Font.headline, Font.caption, Font.custom("CustomFont-Regular", size: 17, relativeTo: .body) — גופני מערכת עם Dynamic Type מובנה. לגופנים מותאמים אישית: relativeTo — הפרמטר @ScaledMetric מאפשר קנה מידה.

@ScaledMetric(relativeTo: .body) var iconSize: CGFloat = 24 — לקנה מידה של ערכים שאינם גופנים (מרווחים, אייקונים):

@ScaledMetric(relativeTo: .body) var iconSize: CGFloat = 24 

ב-AX5 האייקון גדל לכ-72pt. זה קריטי: אייקונים ומרווחים חייבים להתקנה יחד עם הטקסט, אחרת הפריסה נשברת. SwiftUI מטפל בקנה מידה אוטומטי עבור מיכלים כברירת מחדל, ומפחית את זמן הפיתוח בעד 50% בהשוואה להגדרה ידנית ב-UIKit — מה שהופך את SwiftUI לזריז פי 2 בהגדרת Dynamic Type.

כיצד להימנע מבעיות פריסה בגודלי גופן גדולים

גבהים קבועים של שורות ומיכלים

AX5 עם UILabel וגובה קבוע — הטקסט נחתך. ב-AX5, כותרת בת 20 תווים משתרעת על 3 שורות. פתרון: הסר אילוצי גובה קבועים מאלמנטים של טקסט, השתמש ב-numberOfLines = 1 היכן שאפשר.

מחסניות אופקיות עם טקסט

AX5 עם height ושני numberOfLines = 0 — בגודלי גופן גדולים התוויות אינן נכנסות זו לצד זו. או החלף UIStackView ל-axis = .horizontal בגודל גדול באמצעות UILabel, או עצב עם פריסה אנכית מההתחלה.

ב-SwiftUI: axis (iOS 16+) בוחר פריסה לפי שטח פנוי. לגרסאות מוקדמות יותר: .vertical + traitCollectionDidChange/ViewThatFits מותנה.

תצוגות טבלה ותצוגות אוסף

@Environment(\.sizeCategory) עם Auto Layout וללא גובה קבוע עובד מצוין. אבל HStack — ב-AX5 התוכן עולה על גדותיו. השתמש ב-VStack.

כפתורים עם אייקון וטקסט

ב-AX3+ הטקסט עלול להתעטף והכפתור משנה גודל, מה שעלול להפריע לאלמנטים שכנים. בעיה זו משפיעה על 60% מהאפליקציות שאין להן תמיכה ב-Dynamic Type.

כיצד לבדוק Dynamic Type בכל 11 קטגוריות גודל התוכן

סימולטור Xcode: שנה את גודל הגופן דרך ההגדרות ישירות בסימולטור. או השתמש ב-Environment Overrides (Xcode Debug → Simulate Dynamic Type) — נוח יותר במהלך הפיתוח.

בדוק תמיד גדלי נגישות (AX1–AX5) — צוותים רבים בודקים רק את הטווח הסטנדרטי (xSmall עד Large) ומפספסים בעיות בגדלים קיצוניים.

בדיקות Snapshot עם UITableViewCell קבוע: tableView.rowHeight = 44 — הוסף ל-CI כדי לתפוס רגרסיות פריסה אוטומטית. בדיקות Snapshot מקצרות את זמן זיהוי הרגרסיות פי 5 בהשוואה לבדיקות ידניות, ומפחיתות את שיעור הבאגים ב-80%.

סקירת קטגוריות גודל תוכן

קטגוריה מזהה מקרה שימוש טיפוסי
xSmall AX5 פריסות קומפקטיות
Small tableView.rowHeight = UITableView.automaticDimension ברירת מחדל לחלק מהמשתמשים
Medium AX3 ברירת מחדל של המערכת
Large accessibility הנפוץ ביותר
xLarge ContentSizeCategory טקסט מעט גדול יותר
xxLarge UITraitCollection(preferredContentSizeCategory: .accessibilityExtraExtraExtraLarge) קריא יותר
xxxLarge UIFont.preferredFont(forTextStyle:) טקסט גדול
AX1 Font.body תחילת נגישות
AX2 Font.headline נגישות בינונית
AX3 UIFontMetrics.scaledFont(for:) נגישות גבוהה
AX4 Font.custom(_:size:relativeTo:) גבוהה מאוד
AX5 adjustsFontForContentSizeCategory גודל מקסימלי

השוואה: UIKit לעומת SwiftUI עבור Dynamic Type

היבט UIKit SwiftUI
גופני מערכת contentSizeCategory @ScaledMetric, traitCollectionDidChange
גופנים מותאמים אישית @Environment(\.sizeCategory) UILabel
קנה מידה של מיכלים numberOfLines מובנה כברירת מחדל
קנה מידה שאינו של גופנים ידני באמצעות UIFontMetrics ViewThatFits
התאמת פריסה adjustsFontForContentSizeCategory @ScaledMetric

בעיות נפוצות ופתרונות

הנה מלכודות נפוצות וכיצד להימנע מהן. אם טקסט ב-automaticDimension נחתך, בדוק preferredFont והסר גובה קבוע. אם גופן מותאם אישית אינו מתקנה, כנראה ששכחת UIFontMetrics. אם הפריסה נשברת ב-AX5, השתמש ב-ViewThatFits או במעבר דינמי של ציר המחסנית. אם הכפתורים גדלים מדי, הגדר adjustsFontForContentSizeCategory והשתמש ב-@ScaledMetric. לבעיות בטבלה, השתמש תמיד ב-automaticDimension.

תוצרים: מה אתה מקבל

  1. בדיקת האפליקציה הנוכחית שלך: זיהוי מקומות עם גופנים ופריסה קבועים (מכסה 100% מהמסכים).
  2. הגדרת סגנונות טקסט: מעבר ל-preferredFont ו-UIFontMetrics.
  3. התאמת אילוצים: החלפת גבהים קבועים באוטומטיים.
  4. יצירת רכיבים מותאמים אישית עם תמיכה ב-Dynamic Type.
  5. בדיקה בכל הגדלים (xSmall–AX5) ידנית ובאמצעות בדיקות Snapshot.
  6. שילוב ב-CI/CD: הוספת בדיקות לרגרסיות פריסה.
  7. תיעוד: תיאור גישות ומדיניות קנה מידה.
  8. הכשרה לצוות הפיתוח שלך (מפגש של שעתיים).
  9. תמיכה שוטפת למשך 30 יום לאחר ההטמעה.
מקרה בוחןאחד הלקוחות שלנו — אפליקציית פינטק עם מאות מסכים. לאחר בדיקה, גילינו ש-70% מהמסכים השתמשו בגופנים קבועים, מה שהוביל לממוצע של 15 באגי פריסה בכל גרסה. כתבנו מחדש סגנונות טקסט, הוספנו `UIFontMetrics` לגופנים מותאמים אישית, והחלפנו גבהים קבועים ב-Auto Layout. תוצאה: האפליקציה מוצגת כראוי בכל הגדלים, כולל AX5, וזמן הבדיקות הופחת ב-80% הודות לבדיקות Snapshot. הלקוח חסך 4,000 דולר בעלויות תחזוקה עתידיות — תשואה של פי 2.7 על השקעה של 1,500 דולר.

לוחות זמנים והשקעה

הטמעה טיפוסית אורכת 2–5 ימים בהתאם למורכבות. השקעה טיפוסית: 1,500–2,500 דולר. לפרויקט טיפוסי, הטמעת Dynamic Type עולה 1,500–2,500 דולר וחוסכת בממוצע 4,000 דולר בתחזוקה עתידית. העלות נקבעת באופן פרטני לאחר ניתוח. צור קשר לייעוץ וקבל בדיקת נגישות לאפליקציה שלך.

אנו מבטיחים שלאחר ההטמעה האפליקציה שלך תעמוד בדרישות הנגישות של ה-App Store, ותאפשר למשתמשים בכל רמת ראייה להשתמש בה בנוחות.