2011-05-01 116 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