使用 buttonPress 淡化 UIColor

fading the UIColor with a buttonPress

我正在制作一个交互式应用程序,它应该显示一个蓝色的 UILabel,当按下某个按钮时它必须淡出。当我们一直按下按钮时,标签的颜色应该会变淡。我尝试创建一个自定义 UIColor 并更改它的亮度,但它并不是很有效。按下几次按钮后它会逐渐消失,之后颜色根本不会改变。

实现我的目标的最佳方式是什么?任何帮助,将不胜感激。这是一项简单的任务,但无缘无故地变得烦人。

这是我正在做的代码。 "tube" 是 UILabel,其背景颜色应该随着 int "count" 不断增加而淡化。

var intensity : CGFloat = 0.3         
@IBAction func fa(sender: AnyObject) {

    let five = UIColor(hue: 0.61, saturation: 0.31, brightness: 0.76, alpha: intensity)
    let four = UIColor(hue: 0.61, saturation: 0.31, brightness: 0.65, alpha: intensity)
    let three = UIColor(hue: 0.61, saturation: 0.31, brightness: 0.59, alpha: intensity)
    let two = UIColor(hue: 0.61, saturation: 0.31, brightness: 0.53, alpha: intensity)
    let one = UIColor(hue: 0.61, saturation: 0.31, brightness: 0.37, alpha: intensity)



    count += 1

    if (count == 0){
        tube.backgroundColor = UIColor(red: 109, green: 132, blue: 180, alpha: 0.2)
    }
    else if (count == 1){
        tube.backgroundColor = one
        print("one")
    }

    else if (count == 2 ){
        tube.backgroundColor = two
        print("two")
    }

    else if (count == 3){
        tube.backgroundColor = three
        print("three")
    }

    else if (count == 4){
        tube.backgroundColor = four
    }

    else if (count == 5){
        tube.backgroundColor = five
    }
    else {
        tube.backgroundColor = UIColor(red: 109, green: 132, blue: 180, alpha: 0.2)
    }

假设 ViewController 背景为白色,您可以通过实际淡化按钮本身或颜色的 alpha 值来淡化背景色。

要更改按钮的不透明度,请使用以下代码:

if tube.layer.opacity > 0 {
    tube.layer.opacity -= 0.1
}

如果您想淡化颜色,则必须从以前的颜色中提取 RGB 值(参见 )并在重新创建它时更改其 alphaValue。