UIButton 突出显示的背景图像未显示

Posted

技术标签:

【中文标题】UIButton 突出显示的背景图像未显示【英文标题】:UIButton highlighted background image is not showing 【发布时间】:2016-04-12 22:38:43 【问题描述】:

我必须使用多个按钮以编程方式创建布局,我使用以下代码创建按钮:

let myButton = UIButton(type: .Custom)
myButton.frame = CGRectMake(100,100,100,100)
myButton.setTitle("Normal", forState: .Normal)
myButton.setTitle("Selected", forState: [.Selected,.Highlighted])
myButton.setBackgroundImage(UIImage(named: "normal.png"), forState: .Normal)
myButton.setBackgroundImage(UIImage(named: "selected.png"), forState: [.Selected,.Highlighted])
self.view.addSubview(myButton)

一旦按下,标题和图像就不会改变。

如果我引用在 Storyboard 中创建的 UIButton,则相同的代码会起作用。

我还需要设置其他属性吗?

谢谢

【问题讨论】:

当您点击按钮时按钮是否有反应(变为灰色)? 是的。我可以看到状态的变化 您是否尝试删除 .Selected 并仅使用 .Highlighted ? 尝试使用或|喜欢。突出显示 | .选定 【参考方案1】:

尝试将合并的 setBackgroundImage 调用拆分为两个:

myButton.setBackgroundImage(UIImage(named: "selected.png"), forState: [.Highlighted])
myButton.setBackgroundImage(UIImage(named: "selected.png"), forState: [.Selected])

【讨论】:

这行得通,但我不明白为什么相同的语法适用于 Storyboard 中创建的 UIButtons @Ivan 你是什么意思相同的语法适用于情节提要?我认为情节提要拆分了不同的状态(突出显示和选中)。

以上是关于UIButton 突出显示的背景图像未显示的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIImage 上像 UIButton 一样在点击时实现突出显示?

如何禁用 UIButton 突出显示操作

针对突出显示的背景设置 UIButton 突出显示的标题文本,从而产生暗淡的文本

Objective C - UIButton 保持突出显示/选中,背景颜色和字体颜色在突出显示/选中时发生变化

突出显示时更改 UIButton 的背景颜色

UIButton 背景颜色与突出显示的文本重叠