Supporta il Tipo Dinamico
Assicurarsi che gli elementi di testo si adattino alla dimensione del carattere preferita dall'utente
Controlli Eseguiti
Gli elementi di testo dovrebbero avere le proprietà necessarie per supportare il Tipo Dinamico e ridimensionarsi in base alla preferenza di dimensione del carattere del dispositivo dell'utente.
La regola Supports Dynamic Type è ora attiva di default e la proprietà optInToSupportsDynamicType è deprecata. Se in precedenza hai optato per questa regola, rimuovi la proprietà dal tuo codice.
Esempio Non Corretto ❌
Gli elementi di testo utilizzano caratteri fissi che non rispondono all'impostazione del Tipo Dinamico dell'utente
Dopo aver aumentato l'impostazione del Tipo Dinamico alla dimensione più grande, il testo remains unchanged — non cresce per riflettere la preferenza dell'utente
Esempio Corretto ✅
Gli elementi di testo utilizzano caratteri scalabili che rispondono all'impostazione del Tipo Dinamico dell'utente
Dopo aver aumentato l'impostazione del Tipo Dinamico alla dimensione più grande, il testo scales up accordingly per corrispondere alla preferenza del dispositivo dell'utente
In Sintesi
- Questa regola ha un impatto critico sugli utenti con problemi di vista che si affidano a testi di dimensioni maggiori
- Gli elementi di testo devono supportare il Tipo Dinamico affinché si ridimensionino quando l'utente modifica la dimensione del carattere del dispositivo
- Questa regola si basa sull'API XCUI Accessibility Audit di Apple, che richiede iOS 17.0 o successivo.
- Supports Dynamic Type viene eseguita solo durante i test mirati e non produrrà risultati con Auto Scan.
Impatto sugli Utenti
Le persone con problemi di vista sono le più colpite dai testi che non possono ridimensionarsi. Il Tipo Dinamico è una funzione di iOS che permette agli utenti di impostare una dimensione del carattere preferita su tutto il dispositivo, e le app devono rispettare tale preferenza. Quando gli elementi di testo non supportano il Tipo Dinamico, gli utenti che necessitano di testi più grandi devono sforzarsi per leggere contenuti che non si adattano alle loro impostazioni.
Conferma Problema Supporto al Tipo Dinamico
- Vai alla schermata che contiene il testo e osserva la dimensione attuale del carattere e il suo layout
- Ingrandisci la dimensione del carattere modificando l'impostazione del Tipo Dinamico:
- Se stai usando un simulatore:
- Apri Ispettore di Accessibilità
- Nell'angolo in alto a sinistra dell'ispettore, cambia il dispositivo dal tuo Mac al simulatore iOS
- Seleziona il pulsante Impostazioni nell'angolo in alto a destra dell'ispettore
- Sotto Dimensione del Carattere, sposta il cursore su un'impostazione più grande
- Se stai usando un dispositivo con iOS 13.0+:
- Apri Impostazioni
- Seleziona Accessibilità
- Seleziona Schermo e Dimensioni del Testo
- Seleziona Testo più Grande
- Muovi il cursore in fondo alla pagina verso un'impostazione più grande
- Se stai usando un simulatore:
- Torna alla tua app e osserva quanto segue sulla stessa schermata:
- Inaccessibile: Il testo non ha cambiato dimensione dopo l'aggiornamento dell'impostazione del Tipo Dinamico
- Accessibile: Il testo ha cambiato dimensione
Correggere i problemi
Per risolvere un problema con il Supporto del Dynamic Type, configura gli elementi di testo per usare font scalabili che rispondono all'impostazione del Dynamic Type dell'utente.
UIKit
Imposta adjustsFontForContentSizeCategory = true su qualsiasi elemento di testo in modo che si aggiorni quando l'utente cambia l'impostazione del Dynamic Type. Usa UIFont.preferredFont(forTextStyle:) per i font di sistema, o UIFontMetrics per scalare un font personalizzato in relazione a uno stile di testo:
// System font — scales automatically to the user's Dynamic Type setting
label.font = UIFont.preferredFont(forTextStyle: .body)
label.adjustsFontForContentSizeCategory = true
// Custom font — scaled relative to a text style using UIFontMetrics
let customFont = UIFont(name: "Georgia", size: 17)!
label.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: customFont)
label.adjustsFontForContentSizeCategory = trueSwiftUI
In iOS 14 o versioni successive, puoi supportare il Dynamic Type in due modi:
- Quando usi un font personalizzato, imposta la proprietà
.fontsu.custom(_:size:relativeTo:)per garantire che i font si scalino in relazione allo stile del testo dell'elemento. - Quando si utilizza un font predefinito per dimensione, il testo verrà scalato automaticamente. Tuttavia, se non viene impostato alcuno stile di font, gli elementi di testo non verranno scalati secondo il loro stile. Ad esempio, il testo che funziona da titolo verrà scalato in modo diverso rispetto al testo che funziona da corpo. Per la migliore esperienza, specifica lo stile del font per far corrispondere il comportamento atteso dell'elemento. Utilizzando un modificatore come
.font(.system(.largeTitle, design: .rounded)), puoi aspettarti che il testo sia il più grande sulla pagina e funzioni come un vero titolo.
React Native
Imposta allowFontScaling={true} su ogni elemento Text per permettergli di scalare secondo le preferenze del dispositivo dell'utente:
<Text style={{ color: 'black', fontSize: 18 }} allowFontScaling={true}> This text allows font scaling. </Text>Posso ignorare questa regola?
Supports Dynamic Type ha un Impatto critico per utenti con problemi visivi, e raccomandiamo fortemente di risolvere tutti i problemi riscontrati. In rari casi può essere accettabile ignorare questa regola - per esempio, se il testo funziona come un logo o marchio di fabbrica, dove la presentazione stessa è essenziale e non ci si aspetta che venga ridimensionata. Scopri di più su ignorare le regole.
Risorse
Pagine dei corsi di Deque University
Nota: L'accesso completo alle risorse di Deque University richiede un abbonamento.
Altre risorse
- Linee guida per l'accessibilità dei contenuti Web (WCAG) 2.1, Raccomandazione W3C
- Documentazione per sviluppatori Apple
