web-dev-qa-db-ja.com

タイプUIButtonTypeCustomのUIButtonはタイトルを表示しません(iPhone)

私は完全に明白な何かを見落としているに違いない?ボタンの画像とサイズは正しく表示されますが、タイトルを表示できません。

私は本当に簡単なテストを行いましたが、これを行うとタイトルは表示されません:

    CGRect frameBtn = CGRectMake(160.0f, 150.0f, 144.0f, 42.0f);
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:[UIImage imageNamed:@"left_halfscreen_button.png"] forState:UIControlStateNormal];
    [button setTitle:@"Hello" forState:UIControlStateNormal];
    [button setFrame:frameBtn];
    NSLog(@"Title:%@", [button currentTitle]);
    //prints "Title:Hello
    [self addSubview:button];

カスタムボタンを生成するファクトリクラスがあり、そこまで細部を台無しにしたので、上記のコードをUIViewに直接移動しました。タイトルはまだ空白です。

これはバグですか、それとも単に目の前に何かが欠けているだけですか。

余分な目のセットをありがとう:)

40
RickiG

画像はタイトルを上書きします。タイトルを表示するには、画像を背景画像にする必要があります。

 [ボタンsetBackgroundImage:[UIImage imageNamed:@ "left_halfscreen_button.png"] 
 forState:UIControlStateNormal]; 
90
Tuomas Pelkonen

似たような問題を抱えています...タイトルの色を設定するだけで、現在の色は白だと思います;)

[ボタンsetTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
28
Stefan Gritzka

問題が見つかりました!

タイトルを上書きする画像ではありません。画像でフレームをプッシュオフしています。

これを使用してみてください:

[btn setTitleEdgeInsets:UIEdgeInsetsMake(0.0, -img.size.width, 0.0, 0.0 )];

それが役に立てば幸い!

13
JapCon

UIButtonを使用すると、ボタンはそのフレームに組み込みのサイズを使用します。

フレームを設定する必要があります。

button.frame = CGRectMake(0, 0, width, height);

またはさらに良くて快適:

[button sizeToFit];
3
János

タイトルが表示されないという同様の問題がありました。フレームプロパティを設定するのを忘れました:

//set the position of the button
button.frame = CGRectMake(100, 170, 100, 30);
0
testing