Zeilenumbruch funktioniert nicht für UILabel
Verwendung von autolayout kann ich nicht überschreiben, mein label im code. Ich habe die Etiketten Attribute IB: Lines = 0, Zeilenumbrüche = Zeilenumbruch, aber ich habe meine Höhe eingestellt, um eine einzige Zeile, weil durch welche Zelle ausgewählt ist, bestimmt, welche text in das Etikett. Also manchmal ist das Etikett nur noch eine Zeile.
In meinem viewDidLoad:
myLabel.text = @”blah, blah, blah….”;
[myLabel setLineBreakMode:NSLineBreakByWordWrapping];
myLabel.numberOfLines = 0; //have tried 1 but didn’t help
[myLabel sizeToFit];
Diese funktioniert an einem anderen Projekt, aber ich war nicht mit AutoLayout. AutoLayout scheint, diese Einstellungen zu überschreiben.
Ich habe sogar Hinzugefügt,
[myLabel setFrame:CGRectMake(20, 135, 280, 80);
aber es hilft nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ermöglichen die intrinsische Größe der Aufkleber bestimmen Sie die Höhe. Sie sind richtig, dass Sie benötigen, um die numberOfLines-Eigenschaft auf 0. Da man sich mit AutoLayout nicht aufrufen sizeToFit und Sie müssen legen Sie die preferredMaxLayoutWidth des Labels.
Weil deine label-Eigenschaften sind nur einmal gesetzt (in
viewDidLoad
), während die Einschränkungen von autolayout angewendet werden jedesmal, wenn Ihr Blick ist layoutSubviews genannt wird.Auch, mit einem Zeilenumbruch-Modus, bricht den text nicht gut mit Ihr UILabel, wenn es die Anpassung der Schriftarten, als pro Apple docs.
Ist dies ein
UIViewController
verschieben der UILabel-override-code in- (void)viewDidLayoutSubviews
ist, oder ob dies in einer UIView, um den code zu- (void)layoutSubviews
.Vergessen Sie nicht, rufen
[super viewDidLayoutSubviews]
oder[super layoutSubviews]
in dieser Aufrufe.That being said, wenn Sie sich selbst benötigen, überschreiben Sie Ihre Einschränkungen, entweder die Beschränkungen und Eigenschaften, was Sie wollen in die nib-Datei zu verwenden, ansonsten reiner code, um Ihre label.
Müssen Sie
preferredMaxLayoutWidth
auf die maximale Breite Ihres Labels. Sie sollten dies tun inviewWillLayoutSubviews
.