2016-03-25 10 views
7

Ich möchte ausrichten Text in UILabel aber es scheint nicht funktionieren. Eine andere Ausrichtung ist jedoch übrig, rechts, Mitte arbeiten.
Ich verwende XCode 7.2. Ich habe auf Simulator und reales Gerät getestet, aber es gleiches ProblemIOS: Justify Text in UILabel funktioniert nicht in UI

Align enter image description here

Mein Text Begründen produzieren:

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. 

mit Schrift: Helvetica Neue 13.0 und nachlauf/führender: 10

Das gleiche Problem, wenn ich hier ausrichten, um Text zu rechtfertigen enter image description here

Ich weiß nicht, warum mir das passiert ist. Bitte geben Sie mir Anweisungen, um es zu beheben. Jede Hilfe wäre sehr geschätzt

+2

Es ist ja nicht annehmen, in der letzten Zeile zu arbeiten. Alles ist normal. – Desdenova

+0

Auf den ersten Blick dachte ich, du antwortest oder fragend .. weil dein Beitrag sagt, du bekommst schon was du verlangst .. lol;) – swiftBoy

Antwort

4

Es scheint wie ein Fehler von UILabel, aber Sie können es mit einer kleinen Änderung in Ihrem Storyboard beheben.
Klicken Sie auf die mehr Schaltfläche in der gleichen Zeile NSTextAlignments, fügen Sie einen kleinen Kopf Indent, wie 0.1.
enter image description here

Ihr UILabel wird gut funktionieren.
enter image description here

+0

vielen Dank. Ändern Sie die 'Einrückung 'Wert machen meine' UILabel 'zu rechtfertigen –

+0

@ wj2061 es funktioniert nicht für mich Ich versuchte das gleiche – ChenSmile

+0

Das funktioniert für mich. –

2

Dies sollte funktionieren. Hier ist, was ich aus dem Simulator erhalten: enter image description here

Was ich getan habe:

  1. Drag & eine UILabel Drop auf dem Storyboard und fügen Sie einige Constraints und Farben sowie.
  2. Setzen Sie den Text als "attributiert"
  3. Setzen Sie Ihren Text in das Textfeld.
  4. Klicken Sie auf justieren.
  5. Ändern der Polizei
  6. Zeilenzahl 0.

An diesem Punkt sollten Sie diese haben: enter image description here

Jetzt aus dem Storyboard zu Ihrem Controller hinzufügen eine IBOutlet (Strg + ziehen Sie es an die Oberseite Ihres Controllers). Es sollte so aussehen: enter image description here

jetzt einige Codes in Ihrer viewDidLoad fct hinzufügen:

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 

Das letzte, was zu tun ist, Ihren Simulator läuft, um zu sehen, ob es das tut, was Sie erwarten: enter image description here

PS: Mit xCode 7.2 funktioniert definitiv. Es funktioniert für mich auf beiden Versionen.

+0

welche Version von xcode benutzt? wie du es erreichst. –

+0

Version 7.3 (7D175), sollte aber auch mit Version 7.2 funktionieren. Juste eine Minute, ich tippe mehr Info;) – KeyMaker00

+0

ich bin mir 100% sicher, dass das nicht in Xcode 'Version 7.2 (7C68)' funktioniert. Ich werde Xcode jetzt aktualisieren –

1

Hier ist eine Lösung, um mein Problem jetzt zu lösen. Ich habe die alignment justified für meine UILabel programmatisch und es funktioniert

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

Hallo Phan. Dies ist die gleiche Lösung, die ich dir gegeben habe, aber deine ist in Obj-C. Ein bisschen Anerkennung wäre gread; ( – KeyMaker00

+0

@ KeyMaker00 Ich vermisse deine Swift-Code. Es ist gleich mein Code in 'Obj-C' richtig ?. Ich weiß nicht schnell, Entschuldigung für meinen Fehler –

0

nicht zugeschrieben Text Verwenden Sie nur Plain Text verwenden und wählen Sie den gesamten Text und machen es zu rechtfertigen. Ich stehe vor dem gleichen Problem, indem ich es im Storyboard geändert habe. Wenn es nicht funktioniert, dann muss man es beheben, indem Sie den Code ein: -

Mit Zugeschrieben Text: -

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; 

Plain Text mit: -

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

hoffe, es hilft ..

0

Sie können es programmatisch tun, wenn sie nicht von Storyboard oder nib arbeiten

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; 
Verwandte Themen