Wie Sie programmgesteuert ändern Sie die Größe eines UIButton, um die text-Größe und halten eine schöne Polsterung?
Habe ich eine Schaltfläche, die dynamisch erstellt wird und muss geändert werden. Es hat viel Platz zum wachsen, aber das aufrufen sizeToFit Nähte, nichts zu tun oder zumindest nicht vergrößern Sie die Taste genug.
Wie erhalte ich die gewünschte Wirkung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Check-out die
NSString
Methode-sizeWithFont:
. Es gibt eineCGSize
wird Sie darüber informieren, wie viel die Größe der text in der Taste. Passen Sie anschließend die Schaltfläche frame basierend auf dieser Größe, hinzufügen was auch immer, die Polsterung, die Sie wünschen, um die Breite und Höhe der Schaltfläche Rahmen. So etwas wie dieses:(aus dem Gedächtnis geschrieben; nicht kompiliert. 🙂
Natürlich haben Sie, um die Schaltfläche Titel und die schriftart sowie...
CGRect
, nicht CGFrame, die nicht existieren auf jeder Plattform! Ich bearbeitete die Antwort.In iOS 7, sizeWithFont: abgeschrieben. Jetzt sollten Sie verwenden sizeWithAttribute:.
Aber das ist nicht, wie ich dieses Problem lösen. Es gibt zwei Möglichkeiten, wie Sie gehen über es:
1) verwenden Sie [Taste sizeToFit] stellen Sie sicher, AutoLayout deaktiviert ist. Andernfalls werden Sie nicht in der Lage, passen Sie die Größe der Schaltfläche programmatisch. Sie müssen passen Sie die Größe Ihrer Einschränkungen.
2) Jedoch, diese Antwort ist sehr begrenzt im Einsatz. In dem Beispiel, das ich bin, Ihnen zu zeigen, die Taste go aus dem Bildschirm, da der text auf einer Zeile. Ändern Sie die Höhe der Schaltfläche, während die Bestimmung der Breite verwenden Sie den folgenden code. Wieder einmal stellen Sie sicher, autolayout deaktiviert ist oder wird das nicht funktionieren.
Weil boundingRectWithSize passieren Sie ein rect hat, dass nicht-ganzzahlige Größen, die Sie verwenden müssen, ceilf zu Runde bis.
Ich subtrahieren 10 von der Breite bevor ich es in boundingRectWithSize zu erstellen Polsterung für meine Taste.