gpt4 book ai didi

iphone - UIButton 禁用和启用背景图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:21 27 4
gpt4 key购买 nike

我的应用程序由几个按钮组成,当用户触摸其中一个按钮时,它们下方会出现一个阴影,其余按钮不应有任何背景图像,我需要类似 Instagram 应用程序效果的东西,这是我的代码,但我的问题是当我触摸其他按钮时,阴影不会出现。

#define BGB [btn setBackgroundImage:[UIImage imageNamed:@"shadow.png"] forState:UIControlStateNormal]
#define _BGB [btn setBackgroundImage:nil forState:UIControlStateNormal]

- (IBAction)effectsPerform:(id)sender {

UIButton *btn = (UIButton *)sender;

if (btn == EB0) { BGB; } else { _BGB; }
if (btn == EB1) { BGB; } else { _BGB; }
if (btn == EB2) { BGB; } else { _BGB; }

//and other buttons ...
}

最佳答案

试试这个方法:

-(void)changeButton:(UIButton *)button background:(UIImage *)image
{
[button setBackgroundImage:image forState:UIControlStateNormal];
}

- (IBAction)effectsPerform:(UIButton *)sender
{
[self changeButton:sender background:(sender == EB0 || sender == EB1 || sender == EB2) ? [UIImage imageNamed:@"shadow.png"] : nil];
}


更新:您可以使用另一种方法,在您的 viewDidLoad: 方法中为您可以设置的每个按钮执行此操作:

[button setBackgroundImage:nil forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"shadow.png"] forState:UIControlStateSelected];

然后在你的-(IBAction)effectsPerform:

- (IBAction)effectsPerform:(UIButton *)sender 
{
button1.isSelected = (sender == button1);
button2.isSelected = (sender == button2);
....
}

...这样您就可以保证只有一个选定的按钮。你可以做些什么来优化你的代码,你可以继承 UIButton 并在 init 方法中调用后台设置方法,然后所有按钮都可以是这种类型(你可以通过设置它们的类在界面构建器中标记它们) - 这个这样您就不需要为每个按钮的每个状态设置背景图像。

关于iphone - UIButton 禁用和启用背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10445480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com