如何在选择模式下扩展UIButton框架?

时间:2013-03-06 09:00:05

标签: ios objective-c uibutton

我有一个小的UIButton并通过以下方式设置选择状态的背景:

[button setBackgroundImage:[UIImage imageNamed:@"butBG.png"] forState:UIControlStateSelected];

butBG.png imageSize > button.frame。 我希望在UIButton.frame时将[button setSelected:YES];展开为等于imageSize 之后返回原点Frame [button setSelected:NO];

我该怎么做?感谢您的帮助!

5 个答案:

答案 0 :(得分:3)

1)使用btn.isSelected检查按钮单击时的按钮状态。

2)如果btn.isSelected为真,则将按钮大小设置为与图像大小相似,否则设置正常状态下所需的按钮大小。

答案 1 :(得分:1)

您可以为按钮创建一个类别,并覆盖setSelected方法以根据状态更改按钮的帧大小

答案 2 :(得分:1)

您可以聆听按钮的状态,并在更改时调整其大小

在viewDidLoad中(或使用界面构建器执行等效操作)

[button addTarget:self action:@selector(myButtonStateChanged:) forControlEvents:UIControlEventTouchDown];

[button addTarget:self action:@selector(myButtonStateChanged:) forControlEvents:(UIControlEventTouchUpInside | UIControlEventTouchUpOutside | UIControlEventTouchCancel)];

创建方法

- (IBAction)myButtonStateChanged:(UIButton *)sender {
  if (sender.selected) {
     sender.frame = BIG_SIZE_FRAME;
  }
  else {
     sender.frame = NORMAL_SIZE_FRAME;
  }

}

答案 3 :(得分:0)

-(void)setButtonframe:(UIButton *)button
{
    if (button.selected)
    {
        [button setFrame:largeFrame];

    }
    else
    {
        [button setFrame:smallFrame];

    }
}

呼叫 [self setButtonframe:sender]; 在按钮的操作中单击

答案 4 :(得分:0)

为此而去......

- (IBAction)paymentBtnCliked:(id)sender {

if ([sender isSelected]) {
     // configure same object as per requirement
    [paymentBtn setSelected:NO];
}else{
     // configure same object as per requirement
     [paymentBtn setSelected:YES];

}
}