zoukankan      html  css  js  c++  java
  • swift 16进制转颜色

    import Foundation
    
    extension UIColor{
        
        /// 随机色
        static var randomColor:UIColor{
            get{
                let red = CGFloat(arc4random()%256)/255.0
                let green = CGFloat(arc4random()%256)/255.0
                let blue = CGFloat(arc4random()%256)/255.0
                return UIColor(red: red, green: green, blue: blue, alpha: 1.0)
            }
        }
       
     
        /// 16进制字符串转颜色
        /// - Parameter hex: 16进制字符串
        public convenience init(hex: String) {
    
                var red:   CGFloat = 0.0
                var green: CGFloat = 0.0
                var blue:  CGFloat = 0.0
                var alpha: CGFloat = 1.0
                var hex:   String = hex
    
                if hex.hasPrefix("#") {
                    let index = hex.index(hex.startIndex, offsetBy: 1)
                    hex = String(hex[index...])
                }
    
                let scanner = Scanner(string: hex)
                var hexValue: CUnsignedLongLong = 0
                if scanner.scanHexInt64(&hexValue) {
                    switch (hex.count) {
                    case 3:
                        red   = CGFloat((hexValue & 0xF00) >> 8)       / 15.0
                        green = CGFloat((hexValue & 0x0F0) >> 4)       / 15.0
                        blue  = CGFloat(hexValue & 0x00F)              / 15.0
                    case 4:
                        red   = CGFloat((hexValue & 0xF000) >> 12)     / 15.0
                        green = CGFloat((hexValue & 0x0F00) >> 8)      / 15.0
                        blue  = CGFloat((hexValue & 0x00F0) >> 4)      / 15.0
                        alpha = CGFloat(hexValue & 0x000F)             / 15.0
                    case 6:
                        red   = CGFloat((hexValue & 0xFF0000) >> 16)   / 255.0
                        green = CGFloat((hexValue & 0x00FF00) >> 8)    / 255.0
                        blue  = CGFloat(hexValue & 0x0000FF)           / 255.0
                    case 8:
                        red   = CGFloat((hexValue & 0xFF000000) >> 24) / 255.0
                        green = CGFloat((hexValue & 0x00FF0000) >> 16) / 255.0
                        blue  = CGFloat((hexValue & 0x0000FF00) >> 8)  / 255.0
                        alpha = CGFloat(hexValue & 0x000000FF)         / 255.0
                    default:
                        print("Invalid RGB string, number of characters after '#' should be either 3, 4, 6 or 8", terminator: "")
                    }
                } else {
                    print("Scan hex error")
                }
                self.init(red:red, green:green, blue:blue, alpha:alpha)
            }
    }
    

      

  • 相关阅读:
    网益云——冲刺博客0
    网益云——软件工程之现场编程实战
    2020福州大学软件工程实践个人总结
    2020福州大学软件工程实践结对编程作业二
    福州大学软件工程实践个人编程作业
    2020软工第一次作业
    C. Present(二分 + 扫描线)
    P1287 盒子与球
    错排
    Codeforces 1323 D. Present (思维)
  • 原文地址:https://www.cnblogs.com/likun123/p/14437788.html
Copyright © 2011-2022 走看看