xcode – 在Swift中将UIColor转换为十六进制(web颜色)的最佳/最短方法是什么?

前端之家收集整理的这篇文章主要介绍了xcode – 在Swift中将UIColor转换为十六进制(web颜色)的最佳/最短方法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我提出了以下解决方案,但想知道是否有人采用更清晰的方法(在 Xcode-Playground中测试):
  1. let colors = CGColorGetComponents( UIColor.greenColor().CGColor )
  2. let hexCol:String = NSString(format: "#%02x%02x%02x",Int(colors[0] * 255.0),Int(colors[1] * 255.0),Int(colors[2] * 255.0))

结果是#00ff00

其中UIColor.greenColor()是任何UIColor的示例.

编辑:
取自莱昂纳多的答案,我觉得有点重构(他的所有测试仍然适用).

  1. extension UIColor {
  2. typealias RGBComponents = (red: CGFloat,green: CGFloat,blue: CGFloat,alpha: CGFloat)
  3. typealias HSBComponents = (hue: CGFloat,saturation: CGFloat,brightness: CGFloat,alpha: CGFloat)
  4.  
  5. var rgbComponents:RGBComponents {
  6. var c:RGBComponents = (0,0)
  7.  
  8. if getRed(&c.red,green: &c.green,blue: &c.blue,alpha: &c.alpha) {
  9. return c
  10. }
  11.  
  12. return (0,0)
  13. }
  14.  
  15. var cssRGBA:String {
  16. return String(format: "rgba(%d,%d,%.02f)",Int(rgbComponents.red * 255),Int(rgbComponents.green * 255),Int(rgbComponents.blue * 255),Float(rgbComponents.alpha))
  17. }
  18. var hexRGB:String {
  19. return String(format: "#%02x%02x%02x",Int(rgbComponents.blue * 255))
  20. }
  21. var hexRGBA:String {
  22. return String(format: "#%02x%02x%02x%02x",Int(rgbComponents.alpha * 255) )
  23. }
  24.  
  25. var hsbComponents:HSBComponents {
  26. var c:HSBComponents = (0,0)
  27.  
  28. if getHue(&c.hue,saturation: &c.saturation,brightness: &c.brightness,0)
  29. }
  30. }
  31.  
  32. let v1 = UIColor.redColor().rgbComponents.red
  33. let v2 = UIColor.redColor().cssRGBA
  34. let v3 = UIColor.redColor().hexRGBA
  35. let v4test = UIColor.RGBComponents(red: 0.0,green: 0.0,blue: 0.0,alpha: 0.0)

解决方法

Xcode 8.2•Swift 3.0.2

从UIColor获取红色,绿色,蓝色和Alpha组件:

  1. extension UIColor {
  2. var rgba: (red: CGFloat,alpha: CGFloat) {
  3. var r: CGFloat = 0,g: CGFloat = 0,b: CGFloat = 0,a: CGFloat = 0
  4. if getRed(&r,green: &g,blue: &b,alpha: &a) {
  5. return (r,g,b,a)
  6. }
  7. return (0,0)
  8. }
  9.  
  10. // hue,saturation,brightness and alpha components from UIColor**
  11. var hsba: (hue: CGFloat,alpha: CGFloat) {
  12. var hue: CGFloat = 0,saturation: CGFloat = 0,brightness: CGFloat = 0,alpha: CGFloat = 0
  13. if getHue(&hue,saturation: &saturation,brightness: &brightness,alpha: &alpha) {
  14. return (hue,brightness,alpha)
  15. }
  16. return (0,0)
  17. }
  18.  
  19. var htmlRGB: String {
  20. return String(format: "#%02x%02x%02x",Int(rgba.red * 255),Int(rgba.green * 255),Int(rgba.blue * 255))
  21. }
  22.  
  23. var htmlRGBA: String {
  24. return String(format: "#%02x%02x%02x%02x",Int(rgba.blue * 255),Int(rgba.alpha * 255) )
  25. }
  26. }

测试它:

HTML颜色

  1. let myWhiteWebColor = UIColor(red: 1,green: 1,blue: 1,alpha: 1).htmlRGBA // #ffffffff
  2. let myGreyWebColor = UIColor(red: 0.5,green: 0.5,blue: 0.5,alpha: 1).htmlRGBA // #7f7f7fff
  3. let myBlackWebColor = UIColor(red: 0,green: 0,blue: 0,alpha: 1).htmlRGBA // #000000ff
  4. let myRedWebColor = UIColor(red: 1,alpha: 1).htmlRGBA // #ff0000ff
  5. let myGreenWebColor = UIColor(red: 0,alpha: 1).htmlRGBA // #00ff00ff
  6. let myBlueWebColor = UIColor(red: 0,alpha: 1).htmlRGBA // #0000ffff
  7.  
  8. let myColorBlack = UIColor.black.htmlRGBA // #000000ff
  9. let myLghtGrayColor = UIColor.lightGray.htmlRGBA // #aaaaaaff
  10. let myDarkGrayColor = UIColor.darkGray.htmlRGBA // #555555ff
  11.  
  12. let myRedHueWebColor = UIColor(hue: 1,saturation: 1,brightness: 1,alpha: 1).htmlRGBA //ff0000ff

RGB组件

  1. UIColor.red.rgba // (1.0,0.0,1.0)
  2. UIColor.red.rgba.red // 1
  3. UIColor.red.rgba.green // 0
  4. UIColor.red.rgba.blue // 0
  5. UIColor.red.rgba.alpha // 1
  6.  
  7. UIColor.green.rgba // (0.0,1.0,1.0)
  8. UIColor.green.rgba.red // 0
  9. UIColor.green.rgba.green // 1
  10. UIColor.green.rgba.blue // 0
  11. UIColor.green.rgba.alpha // 1
  12.  
  13. UIColor.blue.rgba // (0.0,1.0)
  14. UIColor.blue.rgba.red // 0
  15. UIColor.blue.rgba.green // 0
  16. UIColor.blue.rgba.blue // 1
  17. UIColor.blue.rgba.alpha // 1

Hue组件

  1. UIColor.red.hsba // (0.0,1.0)
  2. UIColor.red.hsba.hue // 1
  3. UIColor.red.hsba.saturation // 1
  4. UIColor.red.hsba.brightness // 1
  5. UIColor.red.hsba.alpha // 1
  6.  
  7. UIColor.green.hsba // (0.333333333333333,1.0)
  8. UIColor.green.hsba.hue // 0.3333333333333333
  9. UIColor.green.hsba.saturation // 1
  10. UIColor.green.hsba.brightness // 1
  11. UIColor.green.hsba.alpha // 1
  12.  
  13. UIColor.blue.hsba // (0.666666666666667,1.0)
  14. UIColor.blue.hsba.hue // 0.666666666666667
  15. UIColor.blue.hsba.saturation // 1.0
  16. UIColor.blue.hsba.brightness // 1.0
  17. UIColor.blue.hsba.alpha // 1.0
  18.  
  19. UIColor.clear.hsba // (.0 0,.1 0,.2 0,.3 0)
  20.  
  21. UIColor.blue.htmlRGB //"#0000ff"
  22. UIColor.blue.htmlRGBA //"#0000ffff"

猜你在找的iOS相关文章