我想让我的UIButton就像一个开/关按钮, 当我点击按钮时,它打开(蓝色), 如果我再次点击相同的按钮,我希望它可以关闭(默认颜色)
我已经让它在打开时可以改变颜色,
- (IBAction)OPEN:(id)sender {
OPEN.backgroundColor = [UIColor colorWithRed:50.0/255.0 green:154.0/255.0 blue:168.0/255.0 alpha:1];
}
但我不知道如何再次点击时将其更改回默认颜色, 请帮忙,谢谢。
答案 0 :(得分:1)
更改颜色时,将按钮的突出显示状态设置为“YES”。然后按下它时检查它是否已经突出显示,如果是,则将其改回灰色背景(或任何你想要的颜色)并将其突出显示为NO。这样下次你按下它时,我们会看到它没有突出显示,我们可以再次将它设置为YES并再次变为蓝色。
使用BOOLEAN切换按钮背景颜色。
BOOL isHighlighted;
-(IBAction)OPEN:(id)sender {
if (isHighlighted == YES) {
isHighlighted = NO;
OPEN.backgroundColor = [UIColor colorWithRed:50.0/255.0 green:154.0/255.0 blue:168.0/255.0 alpha:1];
} else if (isHighlighted == NO) {
isHighlighted = YES;
OPEN.backgroundColor = [UIColor colorWithRed:50.0/255.0 green:50.0/255.0 blue:50.0/255.0 alpha:1];
}
}
答案 1 :(得分:1)
在ViewController.h文件中: -
@interface ViewController : UIViewController{
IBOutlet UIButton *toggleBtn;
int toggleFlag;
}
- (IBAction)onTapBtn:(id)sender;
在ViewController.m文件中: -
- (void)viewDidLoad
{
[super viewDidLoad];
toggleFlag = 1;
}
- (IBAction)onTapBtn:(id)sender {
if (toggleFlag == 0) {
// set whatever color you want for normal tap
[toggleBtn setBackgroundColor:[UIColor grayColor]];
[toggleBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
toggleFlag = 1;
}else if(toggleFlag == 1){
// set whatever color you want after tap button
[toggleBtn setBackgroundColor:[UIColor blueColor]];
[toggleBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
toggleFlag = 0;
}
}
P.S。 : - 不要忘记将IBOutlet和IBAction连接到toggleButton。请告诉我你的结果。
答案 2 :(得分:-1)
您可以尝试使用此方法,以下方法应该可行。两者都不同。尝试任何。 如突出显示的是bool,它会相应地改变颜色。
<强> 1)强>
- (IBAction)buttonPressed:(id)sender
{
UIButton *btn = (UIButton*)sender;
[btn setBackgroundColor:[UIColor redColor]];
}
<强> 2)强>
- (void) setHighlighted:(BOOL)highlighted {
[super setHighlighted:highlighted];
if (highlighted) {
self.backgroundColor = UIColorFromRGB(0x387038);
}
else {
self.backgroundColor = UIColorFromRGB(0x5bb75b);
}
}
祝你好运。