2015-11-19 15 views
6

Ho un UILabel che mostra l'uscita di un timer nel formato MM:ss:SS (minuti, secondi, centisecondi), tuttavia "scuote" da sinistra a destra come la larghezza del cambiamenti di centisecondi - "11" è più stretto di "33" per esempio.iOS Previene il timer UILabel "agitazione" quando i numeri cambiano

C'è un modo per mitigarlo? Ho provato a centrarlo, dandogli una larghezza fissa ma non sembravano aiutare.

+0

assegnare un vincolo di larghezza fissa a un'etichetta con la più ampia possibilità. Ad esempio 33:33:33 dovrebbe essere completamente contenuto in esso. Assegna all'etichetta un po 'di colore di sfondo. Risolverà il tuo problema in una certa misura –

+1

Usando il textkit puoi specificare che tutti i numeri devono essere di uguale larghezza. – milo526

risposta

10

Da iOS 9.0, il carattere di sistema utilizza cifre proporzionali. Se si desidera ottenere cifre a spaziatura fissa, è disponibile un font variante che è possibile ottenere utilizzando +[UIFont monospacedDigitSystemFontOfSize:weight:]. Funziona solo con il font di sistema.

Se si desidera lavorare con un altro carattere, si tenta di chiedere una variante monospazio, ma potrebbe non esserlo. Dato un UIFont, è possibile richiedere il suo fontDescriptor, quindi chiedere che per un descrittore di carattere simile che è monospaced (non solo per le cifre) utilizzando -[UIFontDescriptor fontDescriptorWithSymbolicTraits:] e UIFontDescriptorTraitMonoSpace. È quindi possibile creare un nuovo font passando il nuovo descrittore di font a +[UIFont fontWithDescriptor:size:].

Tuttavia, dubito che ci sia una variante monospaziale di Impact. Non è adatto al tuo scopo.

+0

E funziona anche per i caratteri personalizzati? In questo caso sto usando 'Impact' –

+0

Questo era esattamente ciò che intendevo con il mio commento, non riuscivo a trovarlo abbastanza veloce;) – milo526

+1

@ChrisByatt questo non funzionerà per i font che non hanno un set di cifre mono spaziate. – milo526

1

Uso Un carattere a spaziatura fissa, detto anche carattere a passo fisso, a larghezza fissa o non proporzionale, è un tipo di carattere le cui lettere e caratteri occupano ciascuno la stessa quantità di spazio orizzontale. Esempi di caratteri monospaziati includono Courier, Courier New, Lucida Console, Monaco e Consolas

+0

solo Courier, Courier New sono inclusi nel progetto Xcode. Ma sì quei caratteri hanno uguale larghezza per ogni carattere. simpatico. – coolcool1994

Problemi correlati