2016-03-23 4 views
5

Ich habe ein Problem mit UILabel Unterklasse abgeschnitten Text unten. Das Etikett hat die richtige Höhe, um in den Text zu passen. Es ist noch etwas Platz auf der Unterseite vorhanden, aber der Text wird immer noch abgeschnitten.UILabel-Unterklasse - Text abgeschnitten in der Unterseite, obwohl das Etikett die richtige Höhe hat

The label

Die roten Streifen sind Grenze zu Etikett Schicht hinzugefügt.

Ich unterklassiere die Beschriftung, um Kanteneinfügungen hinzuzufügen.

override func sizeThatFits(size: CGSize) -> CGSize { 
    var size = super.sizeThatFits(size) 
    size.width += insets.left + insets.right 
    size.height += insets.top + insets.bottom 
    return size 
} 

override func drawTextInRect(rect: CGRect) { 
    super.drawTextInRect(UIEdgeInsetsInsetRect(rect, insets)) 
} 

In diesem speziellen Fall sind die Einsätze jedoch Null.

+2

versuchen, UILabel Höhe zu erhöhen, weil die Höhe der Beschriftung kleiner als die Schriftgröße ist oder Schriftgröße verringern. –

+0

Wie Sie sehen können, ist die Texthöhe niedriger als die Höhe des Etiketts. Wenn ich anstelle dieser Unterklasse ein reguläres Label verwende, wird der Text nicht abgeschnitten. –

+0

@mag_zbc welche benutzerdefinierte Schriftart verwenden Sie. –

Antwort

7

Stellt sich das Problem mit

self.lineBreakMode = .ByClipping 

es

self.lineBreakMode = .ByCharWrapping 

das Problem gelöst zu

Wechsel war aus
1

für mich geschah, als topAnchor und centerYAnchor für Etikett zugleich bietet. Das Verlegen von nur einem Anker behob das Problem.

0

Andere Antworten haben mir nicht helfen, aber was tat, war die Höhe des Etiketts beschränke auf das, was Höhe es erforderlich, etwa so:

let unconstrainedSize = CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude) 
label.heightAnchor.constraint(equalToConstant: label.sizeThatFits(unconstrainedSize).height).isActive = true 

Auch sizeThatFits(_:) wird wieder eine 0 by 0 Größe, wenn Ihr Etikett des text Feld ist nil oder gleich ""