我已经在代码中以编程方式创建了几个按钮(在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);
}
答案 0 :(得分:3)
将UIControl转换为UIButton,您将可以访问该帧,例如:
- (void)tabDelete:(id)sender
{
UIButton *button = (UIButton *)sender;
CGRect frame = button.frame;
}
UIButton上的 -addTarget:action:forControlEvents:
始终将UIButton实例作为发件人提供。
@albertamg :谢谢,修正:)