Javascript Swift等价于'#'+;Math.random().toString(16).slice(2,8)
javascript: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
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
。