创建的每个实例的随机颜色生成器和 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颜色值的相互转换