2017-11-09 1 views
0

Ich habe ein unerwartetes Verhalten mit meinem UIlabel sizeToFit() Methode. Jetzt habe ich versucht, die numberOfLines = 0, I-Ereignis LayoutIfNeed() genannt. Aber keiner von ihnen funktioniert.UIlabel Sizetofit unerwartet behaviour

ich gegeben sogar versucht, Methoden in dieser Frage: Vertically align text to top within a UILabel

aber auch hier keine geholfen. Ich habe nicht viele Einschränkungen, ich benutze nur Auto-Größenanpassung Pins. Ich habe es sogar ohne Einschränkungen oder ohne automatische Größenänderung ausprobiert.

Ich habe dieses Label in TableViewCell und CollectionReusableView eingerichtet. Es in awakeFromNib() ruft nur nicht beeinflussen.

UIcollectionReusableView Code:

override func awakeFromNib() { 
    super.awakeFromNib() 


    label.sizeToFit() 

    label.numberOfLines = 0 
    label.layer.shadowOffset = CGSize(width: 0, height: 0) 
    label.layer.shadowOpacity = 3 
    label.layer.shadowRadius = 8 

} 

beschränkt:

enter image description here

TableViewCell Code:

override func layoutSubviews() { 
    super.layoutSubviews() 

// this is the UIview on which the label is put on. 
    contentView.layoutIfNeeded() 

} 


override func awakeFromNib() { 
    super.awakeFromNib() 
    // This is the label has the issue 
    caption.sizeToFit() 

} 

Einschränkungen:

enter image description here

Auch Etikett in der Textansicht wird mit einem anderen Label und stackview constrainst gestapelt sind:

enter image description here

hier ist das Beispiel:

enter image description here

Es scheint einfach nicht zu funktionieren. Ich habe keine Ahnung.

Jede Hilfe wird sehr geschätzt.

+2

Geben Sie den tatsächlichen Code ein, den Sie verwenden, damit jemand versuchen kann, Ihnen zu helfen. Es gibt nicht genug Informationen hier, um einen sinnvollen Rat zu geben. – Dima

+0

aktualisiert die Frage. Weitere Informationen erforderlich? –

+0

können Sie auch angeben, wie Sie das Label erstellt haben? Verwenden Sie das Storyboard oder erstellen Sie es im Code? –

Antwort

1

Sie müssen sizeToFit() aufrufen, nachdem der Text der Beschriftung hinzugefügt wurde, nicht vorher.

Verwandte Themen