setImage forState 方法为按钮上的所有状态设置图像

Posted

技术标签:

【中文标题】setImage forState 方法为按钮上的所有状态设置图像【英文标题】:setImage forState method sets the image for all the states on a button 【发布时间】:2013-06-23 20:27:56 【问题描述】:

我有一个我无法弄清楚的小问题。我有大约 16 个按钮,它们作为插座集合连接到我的控制器。它们还有一个操作方法,可以使按钮的状态从默认更改为选中。我试图将所有按钮的图像更改为仅默认状态。所以我在数组中运行一个循环,并使用 setImage: forState: 方法将它们的图像设置为默认状态。但是该方法会更改所有状态(默认和选定状态)的图像。

这是我的 outlet 集合的 setter 方法

- (void) setCardsButton:(NSArray *)cardsButton

    _cardsButton = cardsButton;

    for (UIButton *button in cardsButton) 

         [button setImage:[UIImage imageNamed:@"card.png"] forState:UIControlStateNormal];

    
     [self updateView];


【问题讨论】:

【参考方案1】:

您为“正常”状态设置的任何属性都用于未明确设置的所有其他状态。这在UIButton setImage:forState: 的文档中有所说明。如果您想为其他州提供不同的图像,您还需要为其他州调用setImage:forState:

【讨论】:

【参考方案2】:

如果您没有为其他状态指定图像,则将使用“正常”(UIControlStateNormal) 状态的图像。因此,明确设置您想要用于状态UIControlStateSelected 的图像。

如果未设置“正常”状态,则使用系统默认值。

【讨论】:

以上是关于setImage forState 方法为按钮上的所有状态设置图像的主要内容,如果未能解决你的问题,请参考以下文章

按钮图像加载为白色?

uibutton与图像

按钮上的标题用 setImage 隐藏,但用 setBackgroundImage 可见

Xcode (Swift) - 如何在按钮上存储图像文件的名称

UIImage 未在按钮 IBAction 上的 setImage 上更新

ipad 4.2 上的 setBackgroundImage 行为发生了变化