2015-10-15 20 views
6

Desidero allineare l'inizio del testo di due UILabel s. Ho allineato i due UILabel s (con lo sfondo giallo e grigio) e ho utilizzato sizeToFit: per ridurre i file UILabel s ma il testo non è perfettamente allineato a sinistra. C'è un buco a sinistra. Il divario è più grande o più piccolo a seconda del primo personaggio. Mi piacerebbe allineare le linee rosse nella seguente immagine. C'è anche un piccolo spazio con il font piccolo nel grigio UILabel ma è appena visibile.Allineare due testi UILabel

enter image description here

Con il carattere Z il divario è più piccola, ma ancora visibile l'area gialla a sinistra per il Z

enter image description here

Un semplice allineamento UILabel non aiuta per il mio problema specifico, perché il contenuto del testo è dinamico e non statico. Quindi potrebbe esserci una combinazione a seconda dei dati che ricevo dal back-end. Pertanto speravo in un attributo UIFont o UILabel che potesse restituire la dimensione del gap in base al rendering corrente del testo.

So che ci sono grandi UIFont attributi relativi come baseline, capHeight e ascender si accede per allineare il testo, ma non sembra esserci alcun attributo che restituire il valore di questa lacuna a sinistra.

+0

Hai provato la mia soluzione? Qualche commento? –

+0

Ho rimosso 'sizeToFit' nel mio codice e ho usato le dimensioni di etichetta fisse solo per eliminare il possibile problema di root di' sizeToFit'. Ho reso il 'UILabel' più ampio per eliminare la giusta ipotesi di allineamento. È ancora lo stesso problema. Deve essere il rendering del carattere. –

risposta

0

Selezionare entrambe le etichette e aggiungere un vincolo denominato align leading edges. enter image description here

0

Uso testo attribuito di UILabel

set rientro secondo il vostro schermo rif requisito girato

enter image description here

0

Se questo non ha bisogno di essere due UILabels, si potrebbe avere uno con attribuite testo. Quindi entrambe le linee sarebbero soggette allo stesso layout.

+0

La tua soluzione sembrava promettente e l'ho provata. Sfortunatamente rende esattamente lo stesso con un 'UILabel' come con due' UILabel's. Ho usato un '\ n' per aggiungere un'interruzione di riga a' NSAttributedString' e aggiunto 'NSFontAttributeName' per lo stile dei caratteri. Gli stessi spazi vuoti a sinistra appaiono come con due 'UILabel' separati –

+0

Quindi questa probabilmente è una proprietà del font. Probabilmente dovrai entrare nei singoli glifi e nel Core Text. Molto più basso livello. –

0

Non ho ancora provato la GUI di cui le persone hanno postato Screen Shots, tuttavia ... il comportamento è coerente con la natura stessa della tipografia.

Le dimensioni dei caratteri sono completamente diverse, quindi la larghezza di un em è diversa, successivamente anche la spaziatura delle lettere è diversa.

Vedere questo: http://www.w3.org/WAI/GL/css2em.htm per ulteriori informazioni.

So che questa risposta non ti dà quello che hai chiesto, tuttavia dovrebbe spiegare perché questo sta accadendo.

Per la personalizzazione come questa (se HTML e CSS), utilizzerei un margine negativo/positivo nel sottotesto, tuttavia, visto che si stanno usando gli sfondi, si usa il padding (o l'equivalente nella GUI).

+0

Grazie per il tuo commento. Penso che tu abbia ragione sul fatto che questo comportamento sia solo la normale tipografia di un font. Ho usato diversi tipi di carattere per vedere se il carattere che ho usato era la fonte se il comportamento. Ma anche altri caratteri generano questa lacuna sinistra. –

+0

Recentemente ho riscontrato questo problema sul microsito che ho creato per il mio sistema Grid: http://interiorsystem.co.uk - guarda l'area di sfondo molto in alto, arancione. Le 2 righe di testo lo dimostrano. Ho dovuto usare il margine per allinearli. –

+0

Sembra carino. Se hai un testo fisso e niente di dinamico, questa è sicuramente la soluzione più semplice. Nel mio caso, però, ho testi dinamici completi e un margine fisso non lo risolve per tutte le possibili combinazioni. –