在进一步尝试自行解决this question时惨遭失败,我正在尝试一些我认为对某些人有用的事情:
func switchColor(data:UInt32){
switch data {
case 1..<200:
backgroundGeometry.firstMaterial?.diffuse.contents =
UIColor(red: CGFloat(242), green: CGFloat(90), blue: CGFloat(90), alpha: 1.0)
case 200..<400:
backgroundGeometry.firstMaterial?.diffuse.contents =
UIColor(red: CGFloat(252), green: CGFloat(162), blue: CGFloat(115), alpha: 1.0)
case 400..<600:
backgroundGeometry.firstMaterial?.diffuse.contents =
UIColor(red: CGFloat(244), green: CGFloat(235), blue: CGFloat(99), alpha: 1.0)
case 600..<800:
backgroundGeometry.firstMaterial?.diffuse.contents =
UIColor(red: CGFloat(110), green: CGFloat(195), blue: CGFloat(175), alpha: 1.0)
case 800..<1000:
backgroundGeometry.firstMaterial?.diffuse.contents =
UIColor(red: CGFloat(91), green: CGFloat(118), blue: CGFloat(211), alpha: 1.0)
default:
backgroundGeometry.firstMaterial?.diffuse.contents = UIColor.green
}
}
所有非默认情况下,节点变为白色。 默认情况下确实将其变为绿色-在每种情况下,诸如UIColor.red,UIColor.blue之类的语句也可以正常工作。
那么,为什么上面的陈述不起作用?
希望您能提供帮助,我在这里完全不知所措:(
编辑:感谢您迅速而正确的答案!所有这些都被接受和支持,但对于它来说,我实在是一个新手。谢谢! :)
答案 0 :(得分:1)
这应该对您有用:
formVisible
颜色的最大值是1.0,而不是255。因此,您需要将这些值相除。
答案 1 :(得分:0)
您需要像
那样构造它们UIColor(red:242.0/255.0, green:90.0/255.0, blue:90.0/255.0, alpha: 1.0)
您可以在Docs
中找到该初始化文件将低于0.0的红色/蓝色/绿色值解释为0.0,将高于1.0的值解释为1.0。
另一个说明之间也有区别
90/255 // wrong
和
90.0/255.0 // right
后者是正确的,因为前者将截断浮动部分,因为它是整数除法
答案 2 :(得分:0)
根据文档,红色,绿色,蓝色和Alfa值分别在0.0到1.0之间浮动。同样,将低于0.0的值视为0.0,将高于1.0的值视为1.0。 因此,您必须将UIColor构造为此
UIColor(red: 91/255, green: 118/255, blue: 211/255, alpha: 1)