2016-12-06 5 views
2

Ich suchte nach 4 Stunden vor dem Schreiben meiner Frage, keine der Antworten, die ich online gesehen habe, um dieses Problem zu lösen.iOS UILabel Größe Problem

Ich arbeite an einer iOS-App, und im Storyboard, wenn ich ein UILabel benutze, egal was ich tue, gibt es immer extra Polsterung oben, das verursacht mir ein großes Problem seit ich bin versuchen, ein Pixel perfektes Design zu haben.

Ich verstehe immer noch nicht, wo das herkommt, habe ich versucht, Plain Text verwenden, und ich versuchte, Strings zugeschrieben, die beide noch diese zusätzliche Polsterung geben:

Screenshot: http://imgur.com/Fldcodl

Ich habe versucht, Unterklasse das Etikett mit den folgenden:

var textInsets = UIEdgeInsets.zero { 
    didSet { invalidateIntrinsicContentSize() } 
} 


override var bounds:CGRect { 
    get { 
     return super.bounds 
    } 
    set { 
     super.bounds = newValue 
     if (self.preferredMaxLayoutWidth != super.bounds.size.width) { 
      self.preferredMaxLayoutWidth = super.bounds.size.width; 
      self.setNeedsUpdateConstraints() 
     } 

    } 
} 

override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect { 
    let insetRect = UIEdgeInsetsInsetRect(bounds, textInsets) 
    let textRect = super.textRect(forBounds: insetRect, limitedToNumberOfLines: numberOfLines) 
    let invertedInsets = UIEdgeInsets(top: -textInsets.top, 
             left: -textInsets.left, 
             bottom: -textInsets.bottom, 
             right: -textInsets.right) 
    return UIEdgeInsetsInsetRect(textRect, invertedInsets) 
} 

override func drawText(in rect: CGRect) { 
    super.drawText(in: UIEdgeInsetsInsetRect(rect, textInsets)) 
} 

Auch mit den Werten für links oben nach rechts unten auf 0 gesetzt ich dieses lästige Top-Polsterung noch bekommen.

Irgendeine Idee, wie man das löst?

Danke!

+0

haben Sie sizeToFit versucht? – danh

+0

Was magst du nicht? Ich sehe kein "Top Padding". – matt

+0

@danh ja, es hat nicht funktioniert – Khalil

Antwort

0

Angenommen, Sie möchten den Leerraum um Ihr Etikett entfernen (nicht ganz klar aus Ihrer Frage).

Ihr Etikett ist gelb hinterlegt, der Rand, den Sie entfernen möchten, befindet sich außerhalb des Etiketts, so dass keine Unterklasse das Etikett entfernt.

Die Art und Weise, wie Sie das Label dem Bildschirm hinzufügen (im Code oder Interface Builder über Constraints oder Frames), definiert diese Ränder, das ist das, was Sie anpassen müssen, um Ihre Ränder zu korrigieren.

+0

Danke für die Antwort, fügte ich den gelben Hintergrund, damit Sie Jungs sehen können, was ich rede, es ist nicht der Leerraum, der Leerraum ist der Ansicht, mein Problem ist mit dem zusätzlichen Platz über dem Text, der in der gelben ist. Das Gelb ist der Hintergrund des Labels, dies ist nicht erforderlich, ich möchte das Top direkt am Rand des Textes ohne diese zusätzlichen 4 Punkte stoppen – Khalil

+0

Ich habe das Bild geändert, jetzt ist es klarer, welchen Raum ich spreche I vermuten – Khalil

Verwandte Themen