使用 buttonPress 淡化 UIColor

Posted

技术标签:

【中文标题】使用 buttonPress 淡化 UIColor【英文标题】:fading the UIColor with a buttonPress 【发布时间】:2016-07-14 08:37:04 【问题描述】:

我正在制作一个交互式应用程序,它应该显示一个蓝色的 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)
    

【问题讨论】:

看不到代码就忍不住了。 @Feldur 刚刚发布! :) 【参考方案1】:

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

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

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

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

【讨论】:

以上是关于使用 buttonPress 淡化 UIColor的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的异常 'NSUnknownKeyException' - 此类与键 buttonPressed 的键值编码不兼容

覆盖 IOS UIButton buttonPressed

在打开的组件中处理 NavigatorIOS ButtonPress

使用 JavaScript 淡化文本颜色

使用子视图按钮淡化 UIView

使用画布 globalAlpha 淡化