swift 随机生成背景颜色

swift是一门新语言,相关的文档资料现在基本上还不是很完整。在尝试开发过程中,走了不少弯路。在这里记录一下自己的”路“,希望以后能少走弯路。

生成随机背景颜色使用的语法和C#或者JAVA基本一致。

UIView.backgroundColor = UIColor

其中UIView是在设备上显示出来的从UIView继承到的对象,都会有这个属性。

其属性值是UIColor对象,而UIColor对象的构造函数有:

    init(white: CGFloat, alpha: CGFloat)
    init(hue: CGFloat, saturation: CGFloat, brightness: CGFloat, alpha: CGFloat)
    init(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
    init(CGColor cgColor: CGColor!)
    init(patternImage image: UIImage!)
    init(CIColor ciColor: CIColor!)

其它的构造函数比较复杂,相对来说先从这个构造函数入手,应该比较容易:

init(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)

在这里注意的是rgb以及alpha值是CGFloat值,是Float的别名。最大值是1,而不是255,可能是OC继承过来比较特殊有意思的表示方式。开始我一直注意到这个,发现背景颜色一直不随着变化。

既然是随机产生颜色,就要使用到随机函数。swift里面有arc4random,rand,random以及rand_r函数可以使用,在这里使用random即可达到效果。

random随机函数返回的值是CLong, 而我们所需要的颜色值是CGFloat, 即:Float。需要在将生成的结果转换为Float

        var color:Float = CGFloat(CGFloat(random())/CGFloat(RAND_MAX))
        var color1:Float = CGFloat(CGFloat(random())/CGFloat(RAND_MAX))
        var color2:Float = CGFloat(CGFloat(random())/CGFloat(RAND_MAX))
        var color3:Float = CGFloat(CGFloat(random())/CGFloat(RAND_MAX))
        txta.text = "result: (color) (color1) (color2)";
        txta.backgroundColor = UIColor(red: color, green: color1, blue: color2, alpha: 1);

  

将以上代码放到按钮的事件里即可。记得VIEW上必须有个txta的文本框来查看结果。

总结:

1)swift里rgb颜色值最大是1的Float

2)除法运算符号是 / , %是求模的运算符。

原文地址:https://www.cnblogs.com/sxlfybb/p/3791826.html