2013-09-25 8 views
15

Mi sono appena spostato da xCode 4.x a xCode 5 e ho fatto il salto su iOS 7. In passato, ho inserito il testo con gli spazi finali in un UILabel e l'allineamento a destra lascia un po 'di spazio a destra di il testo. Da quando mi sono trasferito su xCode 5, questo comportamento sembra essere cambiato. Quando il testo UILabel allinea correttamente il testo, sembra che ignori gli spazi finali e allinea il testo come se ci fossero senza spazi finali.Il comportamento dell'allineamento UILabel è cambiato in xCode 5/iOS 7?

Qualcun altro ha visto questo comportamento? C'è un modo per aggiungere margini all'interno di xCode per adattarsi a questo nuovo comportamento, o deve essere fatto in codice?

+0

Ho visto esattamente lo stesso comportamento su dispositivi iOS 7. Nel mio caso, era in una vecchia app che non ho ancora effettuato la migrazione a Xcode 5, quindi lo sto ancora costruendo con Xcode 4.6.3. Ciò significa che influisce anche sulla modalità di compatibilità di iOS 6. In questa app, il motivo per cui avevo aggiunto questi spazi finali in primo luogo, era di superare un altro bug UILabel: il testo in corsivo allineato a destra è ritagliato sul bordo destro! Così ora sono stato costretto a una nuova soluzione nello stesso pezzo di codice. Questa volta, ho finito con una soluzione sporca, cambiando il testo per allineare il centro e regolando il fotogramma dinamicamente. – Magnus

+0

Si potrebbe provare a usare option-space (o alt-space) in quanto questo dà un carattere di spazio diverso – amergin

risposta

7

Sto vedendo lo stesso comportamento. Penso che il problema non sia la modifica a xCode5 ma quando si passa a eseguire in ios7. Sembra che ora Apple stia spogliando tutti i caratteri dello spazio bianco dai blocchi di testo che verranno visualizzati usando UILabel che viene utilizzato per tracciare linee all'inizio o alla fine di una riga. Se vengono utilizzati più caratteri di spazio all'interno di una linea tra due parole, questi caratteri non vengono rimossi.

Abbiamo utilizzato UILabels per impaginare blocchi di testo multilinea forniti da un linguaggio di markup. Parte del contenuto del testo deve essere allineato al centro ma ha degli spazi deliberatamente aggiunti per spingere una particolare riga di testo verso sinistra o verso destra. Questo è stato riconosciuto e funziona perfettamente in ios6 ma si interrompe in iOS7.

Perché Apple ha apportato questo cambiamento mi chiedo. Qualcun altro che ha questo problema - qualche idea per una correzione per questo? Stiamo sperimentando un font personalizzato che ha un carattere di controllo che sembra uno spazio ma non lo è.

+0

Grazie. Ci sono volte in cui uso spazi prima del testo su un pulsante, per aggiungere più spazio tra l'immagine di un pulsante e il suo titolo (che credo sia internamente un 'UILabel'.Sto usando l'allineamento del controllo centrale, che sembra funzionare come prima. Non ho controllato per vedere se il comportamento di ogni forma di allineamento del testo (sinistra, destra, centro) è cambiato. –

+0

Sto avendo questo problema pure. Estremamente frustrante. Ciò che è ancora più strano per me è che sembra che siano interessati solo gli spazi finali: gli spazi iniziali sono ancora visualizzati. – DanM

+0

Inoltre, la stessa decisione vaga di ignorare gli spazi finali sembra essere applicata anche al calcolo di adjustsFontSizeToFitWidth. – DanM

1

Dai un'occhiata alla UILabel text margin

La maggior parte dei suggerimenti stanno facendo con i codici.

ho fatto la mia con qualche cosa come questa:

[myLabel setFrame:CGRectMake(75 ,20,size.width + 5,size.height+2)]; dove size è la CGSize dei miei contenuti del testo.

Si può anche provare a farlo con Auto Layout constraints.

+0

Grazie. Ci sono certamente un sacco di esempi per realizzare questo usando il codice. Sono curioso di sapere se qualcun altro ha visto questo cambiamento nel comportamento di UILabel. –

-1

Sì, l'ho visto e non vedo una semplice soluzione generale per questo!

0

ho usato \ a:

label.text = [NSString stringWithFormat: @"%@ \a", originalString]; 

che costringe/trucchi lo spazio in mostra.

+0

L'aggiunta di \ a non funziona. iOS 10. –

Problemi correlati