UIButton:为选中的高亮 UI 状态设置背景颜色(不是图像)

Posted

技术标签:

【中文标题】UIButton:为选中的高亮 UI 状态设置背景颜色(不是图像)【英文标题】:UIButton: set background color (NOT IMAGE) for selected-highlighted UI state 【发布时间】:2015-03-24 15:34:34 【问题描述】:

我使用的是 Xcode 6.1.1

是否可以在代码中为 UIButton 的选定/突出显示状态设置背景颜色? - 不是背景图片!

我将 ID 用于链接到 json 文件(即 .plist 文件)的颜色(例如 @"theme.brand.primary")

我已经为setTitleColor UIControlStateHighlighted 完成了它,效果很好...示例代码:

[button setTitleColor:[config getColour:@"button.text.pressed-state"] forState:UIControlStateHighlighted];

但是我希望按钮的颜色改变而不是标题。

setBackgroundColor:forState: 没有选项???

有谁知道有没有简单的方法可以做到这一点?

【问题讨论】:

根据文档直接不可能。您需要使用setBackgroundImage:forState:为每个状态设置一个UIImage(特定颜色)。 您可以继承 UIButton 并覆盖 setHighlighted 方法。你可以关注这个帖子***.com/questions/20300766/… 【参考方案1】:

你不能只检查突出显示吗?

if (myButton.highlighted)         
    myButton setBackgroundColor.......

【讨论】:

【参考方案2】:

我已经开源了一个类STAButton,来填补这个功能漏洞。在 MIT 许可下可用。适用于 ios 7+(我没有测试过旧的 iOS 版本)。

【讨论】:

以上是关于UIButton:为选中的高亮 UI 状态设置背景颜色(不是图像)的主要内容,如果未能解决你的问题,请参考以下文章

ios UIButton设置高亮状态下的背景色

IOS中button的选中和高亮的区别

Android中如何实现高亮显示即选中状态

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

UIButton 高亮设置不会粘住

如何禁用 UIButton 的高亮控制状态?