我想在按钮禁用时将其不透明度设置为 40%。
目前我正在使用我在 StackOverflow 上找到的以下修改代码:
let disabledColor = self.backgroundColor!.colorWithAlphaComponent(0.4)
self.setBackgroundImage(self.imageForColor(disabledColor), forState: .Disabled)
private func imageForColor(color: UIColor) -> UIImage {
let rect = CGRectMake(0.0, 0.0, 1.0, 1.0)
UIGraphicsBeginImageContext(rect.size)
let context = UIGraphicsGetCurrentContext()
CGContextSetFillColorWithColor(context, color.CGColor)
CGContextFillRect(context, rect)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
我想我可以设置我正在使用的背景颜色的不透明度,然后简单地从中创建一个图像并在.Disabled 状态下使用它,但这没有任何作用。
如果我向 imageForColor 发送类似 UIColor.redColor() 的内容,按钮在禁用时会变为红色...但是不透明度似乎被忽略了。
有人知道这是为什么吗?如果我可以只听禁用事件并触发我自己的功能,或者如果 Apple 允许我们为状态而不是背景图像设置背景颜色,那就太好了......
******编辑******
尝试更多操作,看起来它正确地应用了图像,但它似乎将它应用在背景颜色上,并且由于它是相同的颜色但具有不透明度,因此很难注意到变化。
我想一个解决方案是只使用背景图像而不是颜色(?),因为我无法替换颜色...
理想情况下,我想在禁用事件中对整个按钮应用不透明度。
最佳答案
我认为您最好继承UIButton
,然后重写setEnabled
,这样您就可以操作背景颜色。参见 this very similar thread .
关于ios - 监听 Swift 按钮禁用事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37602620/