2015-08-07 5 views
7

Wenn UIButton mit automatischem Layout erstellt wird, enthält die intrinsicContentSize immer unterschiedliche obere/untere Auffüllung entsprechend der unterschiedlichen Schriftgröße. Ich versuche contentEdgeInsets zu setzen, aber es funktioniert nicht wirklich für die obere/untere Auffüllung.Wie entferne ich den oberen und unteren Padding von UIButton, wenn ich ihn mit dem automatischen Layout erstellt habe?

Wie man die Auffüllung auf 0 oder irgendeinen konstanten Wert repariert?

Antwort

-1

Sehen Sie, ob das funktioniert. Erstellen Sie die vertikalen Einschränkungen für den titelLabel der UIButton anstelle der Schaltfläche selbst.

+0

Hat nicht für mich gearbeitet. – SeanR

1

Wenn Sie möchten, dass die Schaltfläche an den Inhalt von titleLabel angepasst wird, habe ich festgestellt, dass die einzige Möglichkeit darin besteht, UIButton abzuleiten und intrinsicContentSize zu überschreiben. Hoffe, das funktioniert für dich!

für mich gearbeitet auf iOS 9,3

class CustomButton: UIButton { 

    override func intrinsicContentSize() -> CGSize { 
     return titleLabel?.intrinsicContentSize() ?? super.intrinsicContentSize() 
    } 
} 
12

Nach einigen Experimenten scheint es, dass, wenn Sie versuchen, und setzen contentEdgeInsets auf Null, werden die Standardeinsätze verwendet. Wenn Sie jedoch, sie zu fast Null gesetzt, es funktioniert:

button.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0.01, bottom: 0.01, right: 0) 

Es scheint auch, dass die Werte floor ‚d bekommen, so dass Sie nicht wirklich gebrochene Polsterung bekommen.

+0

Arbeitete für mich. Vielen Dank! – chrilith

+0

Das Seltsame ist, dass es in 'Interface Builder' zurück in' 0' transformiert wird, da es in der '.xib' /' .storyboard' Datei auf '0,01' gesetzt wurde. –

Verwandte Themen