0

アプリケーションで UIButton を使用しています。このボタンのタイトルは、ユーザーの選択に従って動的に表示されます。ここで、タイトルの内容に従ってボタンの幅のサイズを変更する必要があります。文字列の長さを計算してボタンの幅に割り当てています。

ボタンはタイトルごとにサイズ変更されますが、問題は次のとおりです。構築された価値。2. あるボタンが別のボタンの上に重なっているように見えます。

4

2 に答える 2

2

クラスに属性ボタンがあると仮定します

-(void)changeTitleButtonWithValue:(NSString *)value
{
//get the value length (- (CGSize)sizeWithFont:(UIFont *)font)
size = [value sizeWithFont:yourFont];
self.button.frame = CGRectMake(x, y, size.width,size.height);
[self.button setTitle:value forState:UIControlStateNormal];
[self.button setTitle:value forState:UIControlStateHighlighted];

}

編集:ボタンを取得する方法はたくさんあります

  • InterfaceBuilderから作成します
    • アウトレットとして追加
    • タグを設定し、UIButton * myButton =(UIButton *)[self.view viewForTag:YOURTAG];でgetItします。
  • コードから作成します
    • インスタンス属性
    • タグについても同じですが、作成すると:myButton.tag = YOURTAG;
于 2009-11-11T10:58:43.010 に答える
0

私には、ボタンの幅を変更していないように聞こえますが、別のボタンを追加しています。コードでボタンを追加していますか? もしそうなら、コードを投稿していただけますか?

一般に、別のボタンを追加する場合は、新しいボタンを追加する前に、タグを付けて、そのタグを持つビュー (古いボタン) をスーパービューから削除することをお勧めします。

これは次のようになります (私の頭の上から):

UIButton * button = [[[UIButton alloc] init] autorelease];
button.tag = 100;
/* ...set up the button the way you would normally do... */

// remove old button
[[targetView viewWithTag: 100] removeFromSuperview];

// add new button
[targetView addSubview: button];

タグは、ビューを識別するために使用される任意の整数です。#define使用済みのタグを中央の場所に置くのが最善でしょう。

于 2009-11-11T10:52:34.547 に答える