Как я могу создать UIColor из шестнадцатеричной строки? - PullRequest
526 голосов
/ 13 октября 2009

Как я могу создать UIColor из шестнадцатеричного строкового формата, такого как #00FF00?

Ответы [ 46 ]

1 голос
/ 24 августа 2018

UIColor Hex инициализация

extension UIColor{
public  convenience init(hex : String) {
    var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()

    if (cString.hasPrefix("#")) {
        cString.remove(at: cString.startIndex)
    }

    if ((cString.count) != 6) {
        self.init(red: 1, green: 1, blue: 1, alpha: 1)
        return
    }

    var rgbValue:UInt32 = 0
    Scanner(string: cString).scanHexInt32(&rgbValue)

    self.init(
    red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
    green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
    blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
    alpha: CGFloat(1.0)
    )
}


//Iniitailization
let myColor = UIColor(hex: "#452b4e")

Удачного кодирования! Наслаждайтесь !!!!!!

0 голосов
/ 02 июля 2019

В Swift 5 есть поддержка для этого. Код для этого

UIColor(hexString:  "#FFD479")
0 голосов
/ 19 июня 2019
self.view.backgroundColor = colorWithHex(hex: yourColorCode)
  • Код для создания Цвет из hexaDecimalCode
func colorWithHex (hex:String) -> UIColor {
    var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()

    if (cString.hasPrefix("#")) {
        cString.remove(at: cString.startIndex)
    }

    if ((cString.count) != 6) {
        return UIColor.gray
    }

    var rgbValue:UInt32 = 0
    Scanner(string: cString).scanHexInt32(&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)
    )
}
0 голосов
/ 07 сентября 2014

Несколько вышеупомянутых решений включают несколько ненужное использование NSStrings. Это расширение класса UIColor немного проще и быстрее:

+ colorWithHex:(UInt32)hex alpha:(CGFloat)alpha
{
    return [UIColor colorWithRed:((hex & 0xFF0000) >> 16)/255.0
                           green:((hex & 0x00FF00) >> 8)/255.0
                            blue:( hex & 0x0000FF)/255.0
                           alpha:alpha];
}

и использовать его просто:

return [UIColor colorWithHex:0x006400 alpha:1.0]; // HTML darkgreen
0 голосов
/ 03 октября 2018

В Xamarin.iOS вместо макроса можно использовать следующее:

public UIColor UIColorFromHexValue(int value, float alpha = 1f) =>
    UIColor.FromRGBA(
        ((value & 0xFF0000) >> 16) / 255.0f,
        ((value & 0x00FF00) >> 16) / 255.0f,
        ((value & 0x0000FF) >> 16) / 255.0f,
        alpha);

Использование аналогично:

label.TextColor = UIColorFromHexValue(0xBC1128);
0 голосов
/ 19 августа 2012

Существует замечательная категория UIColor со множеством функций.

Использование:

textView.textColor = [UIColor colorWithHexString:textColorHex];
NSLog(@"Text Color Hex: %@", textColorHex);

Где textColorHex имеет форму @ "FFFFFF" без символа #.

...