• 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)除法运算符号是 / , %是求模的运算符。

  • 相关阅读:
    电路中的保险丝选择
    EXCEL使用自动换行后,行高在预览和打印字符不全(转载)
    PCB阻抗受控的通孔之设计(转载)
    PCB的阻抗控制
    关于Altera LVDS 经验分享
    在FPGA中实现源同步LVDS接收正确字对齐
    Altera 速度等级
    LVDS原理及设计指南--以及衍生的B-LVDS-M-LVDS--CML-LVPECL电平等
    Bayer图像处理
    Image Signal Processor
  • 原文地址:https://www.cnblogs.com/sxlfybb/p/3791826.html
Copyright © 2020-2023  润新知