2011-07-29 15 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方法中初始化它。然後,您可以在繪圖方法中設置框架和其他屬性,同時只使用按鈕的一個實例。然後您可以釋放dealloc中的按鈕。

tl; dr:看起來好像您在繪圖方法中添加了多個按鈕實例。 drawRect:或layoutSubviews。

+0

它的子類TTMessageItemcell,它被下(空)layoutSubviews調用,實現代碼如下開始在肖像,這是取向時變爲景觀發生了什麼。 – Geekdad

+0

是的。每當單元格重繪時,您都會添加另一個按鈕。如上所述,您需要在繪圖方法之外初始化此按鈕。比如在 - (void)init中。 –

+0

好吧,我會添加無效的初始化和測試 – 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