2016-02-02 10 views
14

Voglio inserire il mio testo in un UILabel, ma per iPhone diversi la dimensione di UILabel sta cambiando, poiché sto utilizzando il layout automatico, ma non riesco a correggere la dimensione del carattere, quindi il mio testo sta tagliando.Come modificare dinamicamente la dimensione del carattere nel layout automatico iOS?

C'è un modo per impostare qualsiasi vincolo in modo che il testo si adatti allo UILabel in modo dinamico?

See here the text got cut, because of different screen resolution

+0

Prova riducendo il contenuto di priorità abbracciare dell'etichetta – iAnurag

+0

è necessario impostare la dimensione del carattere programmatico prioritario abbracciare –

+0

contenuto è impostato su 251, ed è il più basso relativo ad altri vincoli @iAnurag –

risposta

32

Si dovrebbe usare compattazione automatica.

Poiché tutti gli iPhone hanno la stessa classe di dimensioni Compact width in modalità verticale, non è possibile fare affidamento su questo per gestire le dimensioni dell'etichetta.


Anteprime sono per iPhone5, iPhone6 ​​e iPhone 6+

enter image description here

Nella finestra di ispezione, è necessario selezionare scala carattere minimo o dimensione minima dei caratteri di fronte Autoshrink. Ciò consente al contenuto di modificare la dimensione del carattere per adattarlo all'etichetta.

Qui, ho impostato la scala minima del carattere su 0,5, quindi la dimensione minima è metà della dimensione corrente (31,0). Il testo cercherà di adattarsi fino a raggiungere la scala/dimensione minima.

(in genere non utilizzare "Stringa di spaziatura lettere" a questo scopo. Stringa di spaziatura delle lettere utilizza la stessa dimensione del carattere e riduce la spaziatura tra lettere.Può rendere l'etichetta dal 2% al 5% più stretta prima di troncare, ma non è efficace quando carattere minimo di scala/size è abilitata.)


si consiglia di testare un dispositivo grande schermo come il iPad Pro, e anche su uno schermo più piccolo, come il iPhone 4S.

Autoshrink non regola la dimensione del carattere più grande di quello impostato in etichetta, che significa che se si effettua l'etichetta la stessa larghezza dello schermo, ma lascia la dimensione del carattere per , cercherà di aumentare il carattere dimensione fino a raggiungere quella dimensione.

Per fare in modo che funzioni, selezionare una dimensione di grande.

È ancora possibile combinare autoshrink con le classi di dimensione per modificare la dimensione massima del carattere in base al dispositivo/all'orientamento.


Nel caso in cui si desidera utilizzare autoshrink con UIButton s, è ancora possibile impostare questo comportamento con due righe di codice.

myButton.titleLabel.minimumScaleFactor = 0.5; 
myButton.titleLabel.adjustsFontSizeToFitWidth = YES; 
+0

@ Joe Colpo Non è necessario utilizzare una dimensione di carattere enorme per farlo funzionare, basta impostare la dimensione massima del carattere sull'etichetta, quella che si desidera utilizzare su iPad Pro. Prova sempre su tutte le dimensioni dello schermo, puoi facilmente avere un'anteprima con _preview assistant editor_ come ho mostrato. – Crazyrems

+0

hi @Crazyrems: tutto a posto; ma non dimenticare che una nuova macchina viene sempre rilasciata con ancora più pixel fisici! Grazie ancora per l'ottima risposta. Potresti trovare utile questo http://stackoverflow.com/q/37266118/294884 .. o addirittura conoscere la risposta lì? – Fattie

+0

@Crazyrems come possiamo farlo per i campi di testo o le visualizzazioni di testo? – ARS

4

Hi se si aggiunge UILabel da storyboard è possibile impostare font diverso per tutti il ​​layout disponibili.

enter image description here

+0

Risposta perfetta, grazie mille !! perfetto? perché funziona con font uilabel e font uibutton !!! La compattazione automatica non funziona con uibutton –

+1

@WilliamsOuiOui autoshrink funziona con 'UIButton's, un pulsante contiene un' UILabel' :). Basta impostare le proprietà di autoshrink 'titleLabel' del tuo' UIButton'. Ho aggiornato la mia risposta. – Crazyrems

4

È possibile farlo utilizzando classi dimensionali. ogni dimensione di visualizzazione utilizzando una classe di dimensioni, questo si tradurrà in quattro dispositivi astratti: larghezza regolare-altezza regolare, larghezza regolare-altezza compatta, larghezza compatta-altezza regolare e larghezza compatta-altezza compatta. La tabella seguente mostra i dispositivi iOS e le relative classi di dimensioni.  enter image description here

Per impostare la dimensione del carattere per questa particolare classe di dimensioni, selezionare prima il UILabel. Sotto l'ispettore Attributi, dovresti vedere un pulsante più (+) accanto al campo del carattere. Fare clic sul pulsante + e selezionare Larghezza compatta> Altezza normale (oppure in base alle proprie esigenze, selezionare la larghezza & Altezza). Verrà quindi visualizzata una nuova voce per l'opzione Carattere, che è dedicata a quella particolare classe di dimensioni. Mantenere la dimensione intatta per l'opzione Carattere originale, ma modificare le dimensioni del campo del carattere wC hR (OR come da selezione) sui punti richiesti (ad esempio 14).

enter image description here

+0

Grazie, questo è utile, esiste un altro modo o posso creare una relazione tra la dimensione dell'etichetta e la dimensione del carattere e impostare un vincolo? –

+0

È possibile utilizzare adjustsFontSizeToFitWidth proprietà di UILable https://developer.apple.com/library/ios/documentation/UIKit/Reference/UILabel_Class/index.html#//apple_ref/occ/instp/UILabel/adjustsFontSizeToFitWidth –

Problemi correlati