Javascript Swift等价于'#'+;Math.random().toString(16).slice(2,8)

Javascript Swift等价于'#'+;Math.random().toString(16).slice(2,8),javascript,swift,Javascript,Swift,javascript: function randomColor() { return '#' + Math.random().toString(16).slice(2, 8); } 什么是swift等价物?我在这里假设UIKit Swift UI通常使用UIKit,它是一种表示颜色的UIColor类型 您可以使用drand48获取介于0和1之间的随机颜色,将其转换为浮点数,然后返回带有该参数的UI颜色: func randomColor() -> UIColor { r

javascript:

function randomColor() {
    return '#' + Math.random().toString(16).slice(2, 8);
}

什么是swift等价物?

我在这里假设UIKit

Swift UI通常使用UIKit,它是一种表示颜色的
UIColor
类型

您可以使用
drand48
获取介于0和1之间的随机颜色,将其转换为浮点数,然后返回带有该参数的UI颜色:

func randomColor() -> UIColor {
    return UIColor(red: CGFloat(drand48()), 
                  green: CGFloat(drand48()), 
                  blue: CGFloat(drand48()), 
                  alpha: 1.0
    )
}

更新-我在网上找到了这个,这是一个类似但更早的解决方案-因此在这里链接到它可能是有意义的:

该函数对于小于8位的十六进制值不起作用。好吧,它可以工作,但是你会得到一个无效的CSS颜色字符串。那代码到底是做什么的?@luk2302它试图生成6个随机的十六进制数字。这几乎是一个可行的解决方案,尽管它会严重地将“随机”颜色偏向蓝色(或者别的,我猜这取决于),即使错误的位数是固定的。这是一个生成随机十六进制颜色的算法,大部分像波蒂说的蓝色。这是故意的,只需要swift等价物。@Pointy你对偏见的说法有多确定?是否有可能在统计上证明
0000a7
a70000
更有可能?顺便说一句,OP的代码没有填充,因此在这些情况下它甚至不会产生有效的输出。如果您需要故意使其更蓝,您可以将红色和绿色值乘以小于1的数字,例如,乘以
0.6