创建的每个实例的随机颜色生成器和 RGB [重复]

Posted

技术标签:

【中文标题】创建的每个实例的随机颜色生成器和 RGB [重复]【英文标题】:Random color generator and RGB of each instance created [duplicate] 【发布时间】:2016-02-03 09:46:52 【问题描述】:
func randomCGFloat() -> CGFloat 
    return CGFloat(arc4random()) / CGFloat(UInt32.max)


extension UIColor

    static func randomColor() -> UIColor 
        let r = randomCGFloat()
        let g = randomCGFloat()
        let b = randomCGFloat()
        return UIColor(red: r, green: g, blue: b, alpha: 1.0)
    

这是我用来生成随机颜色的代码。我的问题如下。一旦我调用randomColor() 函数两次,我可以获得r,g,b 参数吗?例如

`randomColor()` ->>> call
print the r,g,b
`randomColor()` ->>> call
print the r,g,b

由于它是一个随机数生成器以产生随机颜色,我担心每次我尝试访问函数内的这些变量之一时,我都会得到不同的结果,因为一旦它会被召回(?) .帮助将不胜感激。如果有不同的方法,请随时使用它。

【问题讨论】:

【参考方案1】:

你可以使用标准的UIColor方法getRed(_, green:, blue:, alpha:)

    var r: CGFloat = 0
    var g: CGFloat = 0
    var b: CGFloat = 0
    var a: CGFloat = 0
    UIColor.randomColor().getRed(&r, green: &g, blue: &b, alpha: &a)

    print("R: \(r), G: \(g), B: \(g), A: \(g)")

【讨论】:

我是 swift 的新手。那些&r 是否被视为指针?或者你只是定义你将红色值分配给变量r @Korpel 来自 Swift 文档:当您将变量作为参数传递给 in-out 参数时,您可以在变量名称之前直接放置一个与号 (&),以表明它可以由功能。 非常感谢您的帮助。真的很感激!【参考方案2】:

它不会被召回。一旦你将一个变量分配为你的 randomCGFloat ,它就会被锁定。读取该值不会再次随机化它。唯一会再次将其随机化的方法是再次调用 r = randomCGFloat() 。

要打印,只需照常打印即可。也许println(NSString("RGB: %.2f %.2f %.2f", r, g, b)) 就在您返回 UIColor 代码行之前。


func randomCGFloat() -> CGFloat 
    return CGFloat(arc4random()) / CGFloat(UInt32.max)


extension UIColor

    static func randomColor() -> UIColor 
        let r = randomCGFloat()
        let g = randomCGFloat()
        let b = randomCGFloat()
        println(NSString("RGB: %.2f %.2f %.2f", r, g, b))
        return UIColor(red: r, green: g, blue: b, alpha: 1.0)
    

【讨论】:

嗯,这是我没想到的方法。您实际上是在函数内部实现print

以上是关于创建的每个实例的随机颜色生成器和 RGB [重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript随机生成颜色以及十六进制颜色 与RGB颜色值的相互转换

生成随机颜色

生成随机颜色Java [重复]

如何生成 RGB 的随机阴影?

使用事件侦听器(Javascript、jQuery)将 BG 颜色更改为随机颜色?

R语言颜色-图例legend及位置调整