ios - 监听 Swift 按钮禁用事件

标签 ios swift opacity uicolor

我想在按钮禁用时将其不透明度设置为 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/

相关文章:

ios - 创建具有删除功能的自定义 UIButton 类

iPhone 通话时长

iphone - 在表格 View 的底部添加一个按钮

java - 如何在 Android 编程中从图像中选择像素并降低该像素的不透明度

ios - 在 iOS 文档目录中保留数据

ios - 动画移回原始位置后未调用UIView动画

swift - 使用来自不同 View Controller 的 func swift

ios - 选择时将行移动到表格底部吗?

焦点问题上的 jQuery CSS 不透明度

jQuery: 子元素消失 $ ('.parent_class' ) IE 中的不透明效果