2011-07-29 4 views
0

http://i56.tinypic.com/33f6mmf.pngの切り替えの向き、私が風景に切り替えることだし、それはUIButtonを再描画UIButtonが

を再描画が発生します。ここにボタンコードがあります。

plusButton = [[[UIButton alloc] initWithFrame:CGRectMake(bounds.size.width - 60.0f,  28.0f, 45.0f,90.0f)] autorelease ]; 
[plusButton setImage:TTIMAGE(@"bundle://morebutton.png") 
      forState:UIControlStateNormal]; 
[plusButton showsTouchWhenHighlighted]; 
[plusButton addTarget:self action:@selector(plusButtonDidPress:) 
forControlEvents:UIControlEventTouchUpInside]; 
[self addSubview:plusButton]; 

これは、任意の提案が理解されるであろうTTMessageitemcell(THREE20)

あります。ありがとう。

答えて

1

drawRectなどで呼び出されていますか?これは、描画メソッドが呼び出されるたびにボタンの新しいインスタンスを作成しているかのように見えます。プラスボタンをセルのインスタンス変数にして、initメソッドで初期化してください。次に、ボタンの1つのインスタンスだけを使用しながら、描画メソッドでフレームとその他のプロパティを設定できます。 deallocでボタンを放すことができます。

tl; dr:描画メソッドなどでボタンの複数のインスタンスを追加しているかのように見えます。 drawRect:またはlayoutSubviews。

ティム

+0

それは(無効)layoutSubviewsの下で呼ばれています、サブクラス化TTMessageItemcellでだ、テーブルビューは、肖像画に始まり、これはオリエンテーションがランドスケープに変更されたときに何が起こるかです。 – Geekdad

+0

はい。セルが再描画されるたびに別のボタンが追加されます。上記のように、描画メソッドの外でこのボタンを初期化する必要があります。 - (void)initのようなものです。 –

+0

OK、void initとtestを追加します – Geekdad

0
plusButton = [[[UIButton alloc] initWithFrame:CGRectMake(bounds.size.width - 60.0f,  28.0f, 45.0f,90.0f)] autorelease ]; 

[plusButton setAutoresizingMask:UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleTopMargin]; 


[plusButton setImage:TTIMAGE(@"bundle://morebutton.png") 
      forState:UIControlStateNormal]; 
[plusButton showsTouchWhenHighlighted]; 
[plusButton addTarget:self action:@selector(plusButtonDidPress:) 
    forControlEvents:UIControlEventTouchUpInside]; 
[self addSubview:plusButton]; 
+0

私はこれが働いているかどうか教えてください –

+0

ボタンを自動サイズ調整すると、ポートフォリオの風景から古いボタンが残ってしまいます。もし私がハードコードbounds.size.width - 60.0fを260に設定すると、移動しないので、それ。 – Geekdad

関連する問題