如何通过标签操纵UIButton的框架?

时间:2011-05-01 12:38:54

标签: iphone objective-c cocoa-touch uibutton

我已经在代码中以编程方式创建了几个按钮(在for循环中)。如果用户触摸并拖动其中一个按钮,我想为按钮框架设置动画然后将其删除(这有点像普通OS X Dock的行为,如果你踢出一个应用程序)。

我的问题是我不知道如何访问按钮的框架:我只有按钮的标签,因为这是传递给delete方法的所有内容。 如果我只有按钮标记,如何操作框架?

到目前为止,这是我的代码:

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);



}

1 个答案:

答案 0 :(得分:3)

将UIControl转换为UIButton,您将可以访问该帧,例如:

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

-addTarget:action:forControlEvents:始终将UIButton实例作为发件人提供。

@albertamg :谢谢,修正:)