UIButton 选择状态的图像出现在正常状态的图像后面

Posted

技术标签:

【中文标题】UIButton 选择状态的图像出现在正常状态的图像后面【英文标题】:UIButton select state's image appears behind normal state's image 【发布时间】:2010-11-30 22:15:42 【问题描述】:

我有一个 UIButton,其中设置了正常和选定状态的图像。据我了解,当您将 button.selected 状态切换为 YES / NO 时,它应该在两个图像之间切换。确实如此。但是选择的状态图像总是出现正常状态图像之后。

之所以能看到这个,是因为我的正常状态是播放按钮,中间的三角形基本是透明的。我可以看到它后面出现了暂停按钮。

任何人都知道问题是什么,也许如何解决它?

谢谢:)

【问题讨论】:

我在 ios 5.0 上遇到了同样的问题。在我的情况下,它有可能在第一次加载 NIB 时发生。在随后加载相同的 NIB 时,该按钮可以正常工作,直到应用程序终止。我已向 Apple 发送错误报告,并鼓励其他遇到此错误的人也这样做。 【参考方案1】:

设法通过不使用状态变量来修复它。我只是每次都明确设置图像。有点蹩脚但有效。

【讨论】:

【参考方案2】:

我也遇到了这个问题,这可能是一个错误,所以我将与 Apple 联系。我有以下代码,但“选定状态”图像和文本不会显示。

[btnConfirm setSelected: YES];
[btnConfirm setEnabled: NO];
[btnConfirm setAlpha: .6];

因此,如果该项目先前已被确认,我不希望用户能够再次点击该按钮 ([btnConfirm setEnabled: NO])。我希望将 CONFIRM 的措辞更改为 CONFIRMED,并且我还希望显示自定义的复选标记图像。最后,我希望按钮显示为“灰色”([btnConfirm setAlpha: .6])。

好吧,直到我删除了[btnConfirm setEnabled: NO] 语句,这才起作用。由于某种原因,当按钮被禁用时,它不能处于“选定”状态。我想这是有道理的,但是为什么它们是相互排斥的,我无法解释,所以我将报告我的问题。同时我也可以试试 Highlighted...

【讨论】:

【参考方案3】:

我通过使用禁用状态解决了我的问题。我删除了 [btnConfirm setSelected: YES] 因为它不再需要。一旦 btnConfirm.Enabled 设置为 NO,按钮的 Disabled 状态就会自动设置。

这解决了我所有的问题。

【讨论】:

以上是关于UIButton 选择状态的图像出现在正常状态的图像后面的主要内容,如果未能解决你的问题,请参考以下文章

针对不同状态更改 UIButton 的渐变

UIButton 图像在正常状态下未显示

UIButton 状态

选择时避免 UIButton 反转颜色

在 UITapGestureRecognizer(双击)添加到 UIButton 会减慢将按钮图像设置为选中状态

UIButton背景图像来自不同状态的颜色