2013-09-30 13 views
32

Come si supporta il tipo dinamico in UILabel e UITextView in iOS 7? Sto adattando uno dei nostri progetti per iOS 7 e vorrei supportare questa caratteristica di accessibilità. Non riesco a trovare la specifica modalità di esercitazione su di esso nel sito degli sviluppatori iOS di Apple. Qualsiasi link o codice di esempio sarebbe apprezzato.Come supportare il tipo dinamico nelle etichette in iOS 7

+0

controllare questo tutorial [Come per il supporto di tipo dinamico in iOS 7 Apps .] (http://mythoughtsandexperiments.blogspot.in/2013/12/how-to-support-dynamic-type-in-ios-7.html) –

risposta

57

Se si utilizzano i nuovi metodi UIFont, ci si trova praticamente lì - è sufficiente aggiungere l'osservatore per ascoltare le modifiche.

Anziché impostare una dimensione di carattere specifica, è necessario utilizzare lo preferredFontForTextStyle: e i metodi correlati durante lo styling delle etichette (se si utilizza Interface Builder è possibile selezionare uno stile direttamente nell'Inspector). Per esempio:

self.label.font = [UIFont preferredFontForTextStyle:UIFontTextStyleHeadline];

Una volta fatto che si dovrebbe ascoltare il UIContentSizeCategoryDidChangeNotification. Quando si riceve questa notifica, è necessario disporre le etichette per supportare le nuove dimensioni selezionate (se si utilizza l'autoapprendimento, ciò è normalmente semplice come inviare invalidateIntrinsicContentSize alle proprie visualizzazioni).

Se stai cercando documentazione ufficiale, dai uno sguardo allo Text Programming Guide.

+0

Non c'è un modo per accedere allo stile selezionato nell'interfaccia Costruttore? Altrimenti, sembra una grande svista. Ora devo impostarlo in 2 posizioni, il che significa che sarà inevitabilmente fuori sincrono. – MacsimusPrime

+0

'preferredFontTextStyle' restituisce comunque un font di sistema, esiste un modo per farlo con i caratteri personalizzati? – kevin

1

In Swift 3 e iOS 10 è possibile utilizzare

headline.font = UIFont.preferredFont(forTextStyle: UIFontTextStyleHeadline) 
headline.adjustsFontForContentSizeCategory = true 

Vedi this excellent post per ulteriori informazioni, in particolare come sostenere iOS pre 10.