iphone - カスタマイズ - uibutton image



UIButtonTypeCustomタイプのUIButtonにタイトル(iPhone)が表示されない (4)

私は完全に明白な何かを見過ごしたでしょうか? 私のボタンは画像とサイズを正しく表示しますが、タイトルを表示することはできません。

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

    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に直接移動しました。

これはバグですか、私は単に目の前の何かを見逃していますか?

余分な目をしていただきありがとうございます:)

https://src-bin.com


Answer #1

UIButtonを使用すると、ボタンはフレームにいくつかの組み込みサイズを使用しUIButton

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

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

またはより快適で快適です。

[button sizeToFit];

Answer #2

イメージオーバーライドタイトル、あなたはタイトルを表示するには、イメージをバックグラウンドイメージにする必要があります。

[button setBackgroundImage:[UIImage imageNamed:@"left_halfscreen_button.png"] 
        forState:UIControlStateNormal];

Answer #3

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

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

Answer #4

私は問題を見つけた!

イメージがタイトルをオーバーライドしているわけではありません。 それはイメージによってフレームからプッシュオフされています。

これを試してみてください:

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

それが役に立てば幸い!





uibutton