2013-05-20 16 views
28

Ich habe eine Reihe ähnlicher Fragen gesehen, aber niemand hat die Antwort bekommen, die ich suche. Wenn ich diesen Code verwende, um eine UIButton zu erstellen und seine titleLabel zu setzen, erscheint die UIButton, aber die titleLabel wird nicht angezeigt.UIButton titleLabel wird nicht angezeigt

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; 
[button setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal]; 
button.titleLabel.text = @"Title"; 
button.titleLabel.font = [UIFont fontWithName:@"System-Bold" size:25.0f]; 
[self.view addSubview:button]; 

Dieser Code zeigt die Schaltfläche, aber nicht die Titelansicht, es ist der Titel. Warum kann das sein? Ich entwickle für iOS 6 und höher.

Anmerkung 1: Ich bin nicht auf der Suche nach einer Option wie folgt aus:

[button setTitle:@"Title" forState:UIControlStateNormal]; 

Weil ich die Titlelabel zu verwenden, haben es Schriftart und size einzustellen.

HINWEIS 2: Ich kann kein UILabel erstellen und es als Unteransicht der Schaltfläche hinzufügen. Da der Button später animiert wird.

Antwort

66

Sie müssen immer ControlState angeben, wenn Sie den Titel der Schaltfläche aktualisieren! Es gibt vier mögliche Werte für UIButtons:

UIControlStateNormal 
UIControlStateHighlighted 
UIControlStateDisabled 
UIControlStateSelected 

so zum Beispiel:

[button setTitle:@"Title" forState:UIControlStateNormal]; 

und dann können Sie benutzerdefinierte Einstellungen für Titlelabel gesetzt:

[button.titleLabel setFont:[UIFont fontWithName:@"Zapfino" size:20.0]]; 
[button.titleLabel setTextColor:[UIColor blueColor]]; 
+3

Sie sollten 'setTitleColor: forState' für die Einstellung der Farbe verwenden des Titels auch (anstatt 'setTextColor' auf' titleLabel' zu nennen). – hverlind

8
[button setTitle:@"Title" forState:UIControlStateNormal]; 

Ist der richtige Weg, um die Titelfolge zu setzen.

titleLabel wird verwendet, um Schriftart und Farbe festzulegen.

+0

HINWEIS 1: Ich bin nicht auf der Suche nach dieser Antwort. Ich kann das nicht für die Schriftart verwenden! – Peter

+1

titleLabel wird verwendet, um die Schriftart und die Farbe für den String zu setzen, der durch setTitle gesetzt wird: forState: –

+0

Vielen Dank, ich habe so lange gesucht: D –

2

Versuchen Sie es mit ...

[button setNeedsLayout]; 
[button layoutIfNeeded]; 

Es erzwingt Knopf, um das Layout zu aktualisieren.

Verwandte Themen