2011-05-01 60 views
1

我已經在代碼中編寫了幾個按鈕(在for循環中)。如果用戶觸摸並拖動其中一個按鈕,我想對按鈕框架進行動畫處理,然後將其刪除(所以有點像正常OS X Dock的行爲,如果您踢出應用程序)。如何通過其標籤操縱UIButton的框架?

我的問題是,我不知道如何訪問按鈕的框架:我只有標籤的按鈕,因爲這是所有傳遞給刪除方法。 如果我只有一個按鈕的標籤,我該如何操作框架?

這是到目前爲止我的代碼:

for (int k=0; k < numberOfTabs; k++) // k < 4 (e.g. 3 < 4) 
    { 
     UIButton* btn = [[[UIButton alloc] initWithFrame:frame] autorelease]; 
     btn.tag = k; 
     btn.frame = CGRectMake(-10, 0, buttonWidth, buttonHeight); 
     [btn addTarget:self 
       action:@selector(tabAction:) 
     forControlEvents:UIControlEventTouchUpInside]; 
     [btn addTarget:self 
        action:@selector(tabDelete:) 
      forControlEvents:UIControlEventTouchDragOutside]; 

... 

這是我tabDelete方法至今:

-(void)tabDelete:(id)sender 
{ 
    NSInteger tid = ((UIControl*)sender).tag; 
    NSLog(@"buttonTag about to be deleted has the tag: %i", tid); 



} 
+0

把你的按鈕在數組中。 – 2011-05-01 12:44:54

+0

在你的委託方法中,'sender'parameter _is_你的按鈕。您可以像訪問其「標籤」一樣訪問其「frame」屬性。 – albertamg 2011-05-01 12:58:54

回答

3

鑄UIControl到一個UIButton,你將有機會獲得框架,例如:

- (void)tabDelete:(id)sender 
{ 
    UIButton *button = (UIButton *)sender; 
    CGRect frame = button.frame; 
} 

-addTarget:action:forControlEvents:對UIButton總是提供UIButton ins作爲發件人。

@albertamg:謝謝,固定:)

+1

我想你的意思是'UIButton * button =(UIButton *)sender;' – albertamg 2011-05-01 13:04:34