web-dev-qa-db-ja.com

UIButton titleLabelが表示されない

たくさんの似たような質問を見てきましたが、私が探している答えは誰にもありませんでした。このコードを使用してUIButtonを作成し、そのtitleLabelを設定すると、UIButtonは表示されますが、titleLabelは表示されません。

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];

このコードはボタンを表示しますが、titleViewではなくタイトルです。なぜそれができるのですか? iOS 6以降向けに開発しています。

注1:私はこのようなオプションを探していません:

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

TitleLabelを使用してフォントとfontSizeを設定する必要があるためです。

注2:UILabelを作成して、ボタンのサブビューとして追加することはできません。ボタンは後でアニメーション化されるため。

36
Peter

ボタンのタイトルを更新するときは、常にControlStateを指定する必要があります! UIButtonには次の4つの値があります。

UIControlStateNormal
UIControlStateHighlighted
UIControlStateDisabled
UIControlStateSelected

例えば:

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

次に、titleLabelのカスタム設定を設定できます。

[button.titleLabel setFont:[UIFont fontWithName:@"Zapfino" size:20.0]];
[button.titleLabel setTextColor:[UIColor blueColor]];
81
mdziadkowiec
[button setTitle:@"Title" forState:UIControlStateNormal];

タイトル文字列を設定する正しい方法です。

titleLabelは、フォントと色を設定するために使用されます。

9
andrew lattis

使用してみてください...

[button setNeedsLayout];
[button layoutIfNeeded];

ボタンを押してレイアウトを更新します。

3
iOSGuest

このプロパティは読み取り専用ですが、独自のプロパティは読み取り/書き込み可能です。これらのプロパティを主に使用して、ボタンのテキストを構成します。例えば:

UIButton *button                  = [UIButton buttonWithType: UIButtonTypeSystem];
button.titleLabel.font            = [UIFont systemFontOfSize: 12];
button.titleLabel.lineBreakMode   = NSLineBreakByTruncatingTail;

ラベルオブジェクトを使用して、テキストの色や影の色を設定しないでください。代わりに、このクラスのsetTitleColor(:for :)およびsetTitleShadowColor(:for :)メソッドを使用してこれらの変更を行います。ラベルの実際のテキストを設定するには、setTitle(_:for :)を使用します(button.titleLabel.textではテキストを設定できません)。 titleLabelプロパティは、ボタンがまだ表示されていない場合でも値を返します。システムボタンの場合、プロパティの値はnilです。

in Swift:

button.setTitle("your text", for: .normal)
button.setTitleColor(.white, for: .normal)
0
Mahgol Fa