390 Stimmen

Wie fügt man mehrzeiligen Text zu einer UIButton hinzu?

Ich habe den folgenden Code...

UILabel *buttonLabel = [[UILabel alloc] initWithFrame:targetButton.bounds];
buttonLabel.text = @"Long text string";
[targetButton addSubview:buttonLabel];
[targetButton bringSubviewToFront:buttonLabel];

...die Idee ist, dass ich mehrzeiligen Text für die Schaltfläche haben kann, aber der Text ist immer durch das backgroundImage der UIButton verdeckt. Ein Logging-Aufruf, um die Unteransichten der Schaltfläche anzuzeigen, zeigt, dass das UILabel hinzugefügt wurde, aber der Text selbst ist nicht zu sehen. Ist dies ein Fehler in UIButton oder mache ich etwas falsch?

1voto

Roll your own button class. Das ist auf lange Sicht bei weitem die beste Lösung. UIButton und andere UIKit-Klassen sind sehr restriktiv, wie Sie sie anpassen können.

0voto

Stunner Punkte 11509

I aufgenommen jessecurrys Antwort en STAButton die Teil meiner STAControls Open-Source-Bibliothek. Ich verwende sie derzeit in einer der Anwendungen, die ich entwickle, und sie funktioniert für meine Bedürfnisse. Fühlen Sie sich frei, Probleme zu öffnen, wie es zu verbessern oder senden Sie mir Pull-Anfragen.

0voto

Urvish Modi Punkte 1108
self.btnError.titleLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping

self.btnError.titleLabel?.textAlignment = .center

self.btnError.setTitle("Title", for: .normal)

0voto

Hinzufügen von Schaltflächenbeschränkungen und Unteransichten. Dies ist, wie ich es in meinen Projekten tun, sagen wir, seine viel einfacher so. Ich buchstäblich 99% meiner Zeit machen alles programmatisch Da es für mich viel einfacher ist. Storyboard kann manchmal wirklich fehlerhaft sein [1]: https://i.stack.imgur.com/5ZSwl.png

-4voto

Becca Royal-Gordon Punkte 17031

Obwohl es in Ordnung ist, eine Unteransicht zu einem Steuerelement hinzuzufügen, gibt es keine Garantie dafür, dass es tatsächlich funktioniert, da das Steuerelement möglicherweise nicht erwartet, dass es dort ist und sich daher schlecht verhält. Wenn Sie damit zurechtkommen, fügen Sie das Etikett einfach als Geschwisteransicht der Schaltfläche hinzu und legen Sie den Rahmen so fest, dass er die Schaltfläche überlappt; solange es so eingestellt ist, dass es über der Schaltfläche erscheint, wird nichts, was die Schaltfläche tun kann, es verdecken.

Mit anderen Worten:

[button.superview addSubview:myLabel];
myLabel.center = button.center;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X