2016-03-25 33 views
7

Desidero allineare giustificare il mio testo in UILabel ma sembra non funzionare. Tuttavia, un altro allineamento è lavoro a sinistra, a destra, al centro.
Sto usando XCode 7.2. Ho testato il simulatore e vero e proprio dispositivo, ma produrre stesso problemaIOS: Giustifica il testo in UILabel che non funziona nell'interfaccia utente

Allinea Giustificato enter image description here

Il mio testo:

Don't worry, your data will not be sold.Don't worry,your data wills not be sold. Connecting your accounts will benefit your E score and your profile viewing experience. Don't worry, your data will not be sold.Don't worry, your data wills not be sold. Connecting your accounts will benefit your ECT score and your profile viewing experience. 

con font: Helvetica Neue 13.0 e finali/leader: 10

Lo stesso problema se uso l'allineamento qui per giustificare il testo enter image description here

Non so perché mi è successo. Per favore dammi alcune istruzioni per risolverlo. Qualsiasi aiuto sarebbe molto apprezzato

+2

Non è supponiamo di lavorare sull'ultima riga. Tutto è normale. – Desdenova

+0

A prima vista, pensavo che tu rispondessi o chiedessi .. perché il tuo post dice che hai già ottenuto quello che chiedi .. lol;) – swiftBoy

risposta

4

Sembra un errore di UILabel, ma è possibile risolverlo con un piccolo cambiamento nello storyboard.
Fare clic sul pulsante altro nella stessa riga di NSTextAlignments, aggiungere un piccolo Rientro di testa, ad esempio 0.1.
enter image description here

UILabel funzionerà correttamente.
enter image description here

+0

grazie mille. Il valore 'indent' rende il mio' UILabel' jutify –

+0

@ wj2061 non funziona per me ho provato lo stesso – ChenSmile

+0

Questo funziona per me. –

2

Questo dovrebbe funzionare. Ecco quello che ottengo dal simulatore: enter image description here

Quello che ho fatto:

  1. Trascinare & cadere un UILabel sullo storyboard e aggiungere alcuni vincoli, e colori pure.
  2. Imposta il testo come "attribuito"
  3. Inserisci il tuo testo nel campo di testo.
  4. Fare clic su giustificare.
  5. Cambiare la polizia
  6. numero di linee 0.

A questo punto si dovrebbe avere questo: enter image description here

Ora dallo storyboard al controllore aggiungere un IBOutlet (Ctrl + trascinarlo la parte superiore del controller). Dovrebbe essere simile a questo: enter image description here

Ora aggiungere un po 'di codice nel tuo FCT viewDidLoad:

let paragraphStyle = NSMutableParagraphStyle() 
     paragraphStyle.alignment = NSTextAlignment.Justified 

     let attributedString = NSAttributedString(string: label.text!, attributes: [ NSParagraphStyleAttributeName: paragraphStyle, NSBaselineOffsetAttributeName: NSNumber(float: 0) 
      ]) 

     label.attributedText = attributedString 
     label.numberOfLines = 0 

L'ultima cosa da fare è quello di eseguire il simulatore per vedere se fa quello che ci si aspetta: enter image description here

PS: Con xCode 7.2 funziona decisamente. Funziona per me in entrambe le versioni.

+0

quale versione di xcode usa usando? come lo realizzi. –

+0

Versione 7.3 (7D175) ma dovrebbe funzionare anche con la versione 7.2. Juste un minuto, sto scrivendo più informazioni;) – KeyMaker00

+0

sono sicuro al 100% che non funziona in Xcode 'Versione 7.2 (7C68)'. aggiornerò Xcode ora –

1

Ecco una soluzione per risolvere il mio problema adesso. Ho impostato il alignment justified per il mio UILabel di programmazione e lavoro

NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init]; 
      paragraph.alignment = NSTextAlignmentJustified; 

    NSDictionary *attribute = @{ 
             NSParagraphStyleAttributeName: paragraph, 
             NSFontAttributeName: self.describesLabel.font, 
             NSBaselineOffsetAttributeName:[NSNumber numberWithFloat:0] 
             }; 
    NSAttributedString *attributeMessage = [[NSAttributedString alloc] initWithString:self.describesLabel.text attributes:attribute]; 
    self.describesLabel.attributedText = attributeMessage; 
+0

Ciao Phan. Questa è la stessa soluzione che ti ho dato, ma la tua è in Obj-C. Un po 'di riconoscimento sarebbe gread ( – KeyMaker00

+0

@ KeyMaker00 mi manca il tuo codice Swift. È lo stesso il mio codice in 'Obj-C' giusto ?. Non so swift, mi dispiace per il mio errore –

0

Non utilizzare testo attribuito basta utilizzare il testo normale e selezionare tutto il testo e renderlo giustificare. Sto affrontando lo stesso problema risolto cambiando attribuito al testo normale in Storyboard. Se non funziona allora si deve risolvere il problema per codice: -

Utilizzando testo attribuito: -

NSMutableParagraphStyle *paragraphStyle = NSMutableParagraphStyle.new; 
paragraphStyle.alignment    = NSTextAlignmentJustified; 

NSDictionary *attrsDictionary   = [NSDictionary dictionaryWithObjectsAndKeys:yourFont,NSFontAttributeName,paragraphStyle,NSParagraphStyleAttributeName, nil]; 

NSAttributedString *attributeMessage = [[NSAttributedString alloc] initWithString:yourTextString attributes:attrsDictionary]; 
self.yourLabel.attributedText   = attributeMessage; 

Utilizzando Testo normale: -

self.yourLabel.textAlignment    = NSTextAlignmentJustified; 
self.yourLabel.font      = yourFont; 
self.yourLabel.text      = yourTextString; 

Speranza che aiuta ..

0

Puoi farlo programatically se non il suo lavoro da storyboard o pennino

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 
paragraphStyle.alignment = NSTextAlignmentJustified; 


NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"Your text here"]; 
                  attributes:[NSDictionary dictionaryWithObjectsAndKeys: 
                     paragraphStyle, NSParagraphStyleAttributeName , 
                     [NSNumber numberWithFloat:0],NSBaselineOffsetAttributeName, 
                     nil]]; 

self.yourLabel.attributedText = string;