UIButton 背景图像从另一个按钮更改

Posted

技术标签:

【中文标题】UIButton 背景图像从另一个按钮更改【英文标题】:UIButton background image change from another button 【发布时间】:2014-04-19 21:24:37 【问题描述】:

当我单击另一个按钮时,是否可以更改某个按钮的背景图像?

我基本上有 10 个按钮,我希望用户知道当前点击了哪个按钮。所以会发生什么是每个按钮有 2 个图像。一个为选中,一个为未选中。

我想创建一个函数来重置所有按钮的背景图像。在每个按钮的方法中,我将添加此重置功能,然后更改该特定按钮的背景图像。

有人可以建议这怎么可能吗?

我知道如何在单击按钮时更改按钮的背景图像。

我的按钮是这样的:

- (IBAction)posterButton:(id)sender 
- (IBAction)colorInvertButton:(id)sender 

等等。

【问题讨论】:

处理“重置”按钮的代码只需要引用其他按钮。这与您在处理程序中为每个按钮所做的操作并没有什么不同。 我在 .m 文件中只为这些按钮添加了 Action 功能。我是否也需要在 .h 文件中为它们创建属性? 您需要对所有按钮的引用,所以是的,您需要所有按钮的属性。 【参考方案1】:

查看 UIButton 的文档:像这样配置每个按钮:

[button setControlImage:selectedImage forState:UIControlStateSelected];
[button setControlImage:unselectedImage forState:UIControlStateNormal];

^^这也可以在界面生成器中完成。

还有状态UIControlStateNormal | UIControlStateHighlightedUIControlStateSelected | UIControlStateHighlighted,但这是可选的。

按钮也有一个选中状态,继承自UIControl

如果你想一次只选择一个按钮,试试这个(_selectedButton 应该声明为实例变量):

- (UIButton *)selectedButton 
    return _selectedButton;

- (void)setSelectedButton:(UIButton *)b 
    if(b != _selectedButton) 
        _selectedButton.selected = NO;
        b.selected = YES;
        _selectedButton = b;
    

【讨论】:

以上是关于UIButton 背景图像从另一个按钮更改的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 在按钮图像和标题后面留下白色背景

已知如何用标签值更改 UIButton 背景图像?

如何在 Interface Builder 中更改 UIButton 的背景图像并保留其形状?

UIButton背景图像没有改变

我更改 UIBUtton 背景图像的方式有啥问题?

UIButton:设置图像视图的背景(不设置图像)