我已经UIButton
,我创建了一个扩展程序,为不同的状态添加背景颜色。
我使用以下代码:
extension UIButton {
func setBackgroundColor(color: UIColor, forState: UIControlState) {
UIGraphicsBeginImageContext(CGSize(width: 1, height: 1))
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), color.CGColor)
CGContextFillRect(UIGraphicsGetCurrentContext(), CGRect(x: 0, y: 0, width: 1, height: 1))
let colorImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.setBackgroundImage(colorImage, forState: forState)
}
}
// Set Button Title and background color for different states
self.donateButton.setBackgroundColor(UIColor.redColor(), forState: .Normal)
self.donateButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
self.donateButton.setBackgroundColor(UIColor.greenColor(), forState: .Highlighted)
self.donateButton.setTitleColor(UIColor.whiteColor(), forState: .Highlighted)
self.donateButton.setBackgroundColor(UIColor.greenColor(), forState: .Selected)
self.donateButton.setTitleColor(UIColor.whiteColor(), forState: .Selected)
我的问题是它没有为突出显示/选定状态选择正确的
UIButton
背景颜色和标题颜色。
答案 0 :(得分:62)
我发现问题,UIButton
设置为系统。我只是将其更改为自定义,它开始按预期工作。
答案 1 :(得分:5)
更新Swift 4
extension UIButton {
func setBackgroundColor(color: UIColor, forState: UIControlState) {
UIGraphicsBeginImageContext(CGSize(width: 1, height: 1))
UIGraphicsGetCurrentContext()!.setFillColor(color.cgColor)
UIGraphicsGetCurrentContext()!.fill(CGRect(x: 0, y: 0, width: 1, height: 1))
let colorImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.setBackgroundImage(colorImage, for: forState)
}
}
事件 按钮动作 显示触摸突出显示
答案 2 :(得分:1)
之所以不起作用,是因为您没有设置正确的状态:您错过了[ .highlighted, .selected ]
状态,因此状态又回到了纯.normal
。
当isSelected
和isHighlighted
均为真时,UIKit会明确查找两者的状态组合,并且不会单独接受它们中的任何一个。
原始代码以缺少的状态扩展(并在Swift 5中更新为有效语法):
self.donateButton.setBackgroundColor(.green, for: [ .highlighted, .selected ])
self.donateButton.setTitleColor(.white, for: [ .highlighted, .selected ])
答案 3 :(得分:0)
选择UIButton
时。如果您专注于按钮,则不会将按钮突出显示为状态.Highlighted
。如果未选中,则会根据您的意愿突出显示。对于它,您在按钮中有背景图像,它将使用默认效果突出显示图像。如果要将状态更改为.Selected
,则必须将selected
的变量UIButton
设置为true。
答案 4 :(得分:0)
要实现自定义按钮照明,您需要: -当按下按钮时,在情节提要中设置要查看的背景颜色和Alpha -初始化时,将背景和Alpha设置为未按下的按钮 -为按钮实施三种方法(“向下” /“向上” /“向外拖动”) -在其中,更改按钮照度
答案 5 :(得分:0)
Swift 5,IOS 13 +
<tr>
<td>Style</td>
<td><%= user %></td>
</tr>