Wednesday, September 13, 2017

Hàm tô màu dùng mã hex code color trong Swift

Trong lập trình Swift, để tô màu cho chữ hoặc nút, ta dùng lệnh.
label.textColor = UIColor.blueColor()
Vấn đề là cách này chỉ có một số màu cơ bản, hãy để trỏ chuột vào sau dấu chấm UIColor. và ấn Ctrl+Space bar để xem các màu xổ ra. Bạn sẽ thấy không có nhiều màu lắm.

Nếu muốn màu khác, ta phải tự phối các yếu tố RGB như sau.
label.textColor = UIColor(red: 1, green: 0.4, blue: 1, alpha: 1)
Điều này sẽ mất thời gian hơn là dùng mã hex code.
Giả sử ta muốn dùng những mã hex code color đơn giản, kiểu như "#a1caf1", ta sẽ phải tạo một hàm riêng để dùng, hàm đó như sau.
func hex (hex:String) -> UIColor {
        var cString:String = hex.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet() as NSCharacterSet).uppercaseString
         if (cString.hasPrefix("#")) {
            cString = cString.substringFromIndex(cString.startIndex.advancedBy(1))
        }
      if ((cString.characters.count) != 6) {
            return UIColor.grayColor()
        }
       
        var rgbValue:UInt32 = 0
        NSScanner(string: cString).scanHexInt(&rgbValue)
       
        return UIColor(
            red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
            green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
            blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
            alpha: CGFloat(1.0)
        )
    }
Khi sử dụng, ta sẽ gọi như sau.
label.textColor = hex("#a1caf1")
view.backgroundColor = hex("#a1caf1")

Vậy là ta có thể cho bất cứ màu nào ta thích vào chữ hoặc nút bấm, hoặc đổ màu nền cho view.

No comments:

Post a Comment