Swift 如何提取刚刚随机生成的颜色类型的名称
我想生成一个随机颜色,然后提取颜色的名称。我知道我可以通过创建三个随机浮点数然后返回UIColor来生成颜色,但是当需要定义刚刚创建的颜色名称时,我就不知所措了。我认为这是不可能的。但是,您可以创建自己的UIColors词典(其中键是您指定的颜色名称),然后从词典中随机选择一个。我认为这是不可能的。但是,您可以创建自己的UIColors词典(其中键是您指定的颜色名称),然后从词典中随机选择一个。生成随机颜色后,获取rgb值。使用此选项可为适当的rgb值定义颜色名称并生成名称。它当然不涵盖所有颜色,但它是其中一种可能的解决方案。生成随机颜色后,获取rgb值。使用此选项可为适当的rgb值定义颜色名称并生成名称。它当然不涵盖所有颜色,但它是其中一种可能的解决方案。另一个选项是为红色、蓝色和绿色定义一组范围。基于颜色RGB值在其各自范围内的位置,它将返回一些近似的颜色名称 例如,如果红色、绿色和蓝色都接近255,则在颜色名称的前面添加“Light”(如“Light Green”)Swift 如何提取刚刚随机生成的颜色类型的名称,swift,uicolor,Swift,Uicolor,我想生成一个随机颜色,然后提取颜色的名称。我知道我可以通过创建三个随机浮点数然后返回UIColor来生成颜色,但是当需要定义刚刚创建的颜色名称时,我就不知所措了。我认为这是不可能的。但是,您可以创建自己的UIColors词典(其中键是您指定的颜色名称),然后从词典中随机选择一个。我认为这是不可能的。但是,您可以创建自己的UIColors词典(其中键是您指定的颜色名称),然后从词典中随机选择一个。生成随机颜色后,获取rgb值。使用此选项可为适当的rgb值定义颜色名称并生成名称。它当然不涵盖所有颜色
我还发现它接受随机颜色初始值设定项的枚举值。您可能还可以调整这些枚举以返回相应的字符串值,从而动态地形成颜色名称 另一个选项是为红色、蓝色和绿色定义一组范围。基于颜色RGB值在其各自范围内的位置,它将返回一些近似的颜色名称 例如,如果红色、绿色和蓝色都接近255,则在颜色名称的前面添加“Light”(如“Light Green”)
我还发现它接受随机颜色初始值设定项的枚举值。您可能还可以调整这些枚举以返回相应的字符串值,从而动态地形成颜色名称 这完全有可能!以下是Swift 3的基本解决方案:
Sat=0-100
Br=0-100
S=50…100
B=60…100
H=H/360
S=S/100
B=B/100
H范围=0.497…0.667
S范围=0.5…1.0
B范围=0.6…1.0
我在电子表格中预先定义了几种基本颜色:
func whichColor(color: UIColor) -> String{
var (h,s,b,a) : (CGFloat, CGFloat, CGFloat, CGFloat) = (0,0,0,0)
_ = color.getHue(&h, saturation: &s, brightness: &b, alpha: &a)
print("HSB range- h: \(h), s: \(s), v: \(b)")
var colorTitle = ""
switch (h, s, b) {
// red
case (0...0.138, 0.88...1.00, 0.75...1.00):
colorTitle = "red"
// yellow
case (0.139...0.175, 0.30...1.00, 0.80...1.00):
colorTitle = "yellow"
// green
case (0.176...0.422, 0.30...1.00, 0.60...1.00):
colorTitle = "green"
// teal
case (0.423...0.494, 0.30...1.00, 0.54...1.00):
colorTitle = "teal"
// blue
case (0.495...0.667, 0.30...1.00, 0.60...1.00):
colorTitle = "blue"
// purple
case (0.668...0.792, 0.30...1.00, 0.40...1.00):
colorTitle = "purple"
// pink
case (0.793...0.977, 0.30...1.00, 0.80...1.00):
colorTitle = "pink"
// brown
case (0...0.097, 0.50...1.00, 0.25...0.58):
colorTitle = "brown"
// white
case (0...1.00, 0...0.05, 0.95...1.00):
colorTitle = "white"
// grey
case (0...1.00, 0, 0.25...0.94):
colorTitle = "grey"
// black
case (0...1.00, 0...1.00, 0...0.07):
colorTitle = "black"
default:
print("empty def")
colorTitle = "Color didn't fit defined ranges..."
}
return colorTitle
}
print("Color: \(self.whichColor(color: YourColorSource!))")
它不是完美的,无论谁想要使用它,都需要正确地使用范围来定义颜色之间的真实边界或实现更多颜色
注意:电子表格中的某些值与Swift代码不匹配,因为我已将其调整为无间隙的连续颜色范围…这是完全可能的!以下是Swift 3的基本解决方案:
Sat=0-100
Br=0-100
S=50…100
B=60…100
H=H/360
S=S/100
B=B/100
H范围=0.497…0.667
S范围=0.5…1.0
B范围=0.6…1.0
我在电子表格中预先定义了几种基本颜色:
func whichColor(color: UIColor) -> String{
var (h,s,b,a) : (CGFloat, CGFloat, CGFloat, CGFloat) = (0,0,0,0)
_ = color.getHue(&h, saturation: &s, brightness: &b, alpha: &a)
print("HSB range- h: \(h), s: \(s), v: \(b)")
var colorTitle = ""
switch (h, s, b) {
// red
case (0...0.138, 0.88...1.00, 0.75...1.00):
colorTitle = "red"
// yellow
case (0.139...0.175, 0.30...1.00, 0.80...1.00):
colorTitle = "yellow"
// green
case (0.176...0.422, 0.30...1.00, 0.60...1.00):
colorTitle = "green"
// teal
case (0.423...0.494, 0.30...1.00, 0.54...1.00):
colorTitle = "teal"
// blue
case (0.495...0.667, 0.30...1.00, 0.60...1.00):
colorTitle = "blue"
// purple
case (0.668...0.792, 0.30...1.00, 0.40...1.00):
colorTitle = "purple"
// pink
case (0.793...0.977, 0.30...1.00, 0.80...1.00):
colorTitle = "pink"
// brown
case (0...0.097, 0.50...1.00, 0.25...0.58):
colorTitle = "brown"
// white
case (0...1.00, 0...0.05, 0.95...1.00):
colorTitle = "white"
// grey
case (0...1.00, 0, 0.25...0.94):
colorTitle = "grey"
// black
case (0...1.00, 0...1.00, 0...0.07):
colorTitle = "black"
default:
print("empty def")
colorTitle = "Color didn't fit defined ranges..."
}
return colorTitle
}
print("Color: \(self.whichColor(color: YourColorSource!))")
它不是完美的,无论谁想要使用它,都需要正确地使用范围来定义颜色之间的真实边界或实现更多颜色
注意:电子表格中的某些值与Swift代码不匹配,因为我已将其调整为连续的颜色范围,没有间隙…如果颜色是随机的,则没有“名称”。请定义“颜色名称”!你有命名颜色的列表吗?如果颜色是随机的,它没有“名称”。定义“颜色名称”!您有命名颜色列表吗?接近255的FYI-RGB值为“亮”,而不是“暗”。接近255的FYI-RGB值为“亮”,而不是“暗”。