Bir hex simvolundan necə bir UIColor yarada bilərəm?

Bir hexadecimal simli formatda bir UIColor yaratmaq, məsələn #00FF00 ?

499
13 окт. Rupesh tərəfindən 13 oktyabrda təyin olundu 2009-10-13 15:59 '09 da 15:59 'da 2009-10-13 15:59
@ 43 cavab
  • 1
  • 2

Makro ilə bunu etmək üçün ən asan yolu tapdım. Yalnız başlığınıza əlavə edin və layihəniz boyunca mövcuddur.

 #define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue  0xFF0000) >> 16))/255.0 green:((float)((rgbValue  0xFF00) >> 8))/255.0 blue:((float)(rgbValue  0xFF))/255.0 alpha:1.0] 

hexadecimal uicolor makro

Həmçinin bu kodun formatlaşdırılmış versiyası:

 #define UIColorFromRGB(rgbValue) \ [UIColor colorWithRed:((float)((rgbValue  0xFF0000) >> 16))/255.0 \ green:((float)((rgbValue  0x00FF00) >> 8))/255.0 \ blue:((float)((rgbValue  0x0000FF) >> 0))/255.0 \ alpha:1.0] 

İstifadə edin:

 label.textColor = UIColorFromRGB(0xBC1128); 
694
20 авг. Cavab Tom 20 aug. 2010-08-20 18:16 '10 at 6:16 PM 2010-08-20 18:16

Qısa qərar:

border=0
 // Assumes input like "#00FF00" (#RRGGBB). + (UIColor *)colorFromHexString:(NSString *)hexString { unsigned rgbValue = 0; NSScanner *scanner = [NSScanner scannerWithString:hexString]; [scanner setScanLocation:1]; // bypass '#' character [scanner scanHexInt: return [UIColor colorWithRed:((rgbValue  0xFF0000) >> 16)/255.0 green:((rgbValue  0xFF00) >> 8)/255.0 blue:(rgbValue  0xFF)/255.0 alpha:1.0]; } 
351
13 сент. cavab darrinm 13 sep tərəfindən verilir . 2012-09-13 02:19 '12 at 2:19 2012-09-13 02:19

Mən Android platformasında istifadə edilən hex strings ilə 100% uyğun bir həll var və mən cross-platform mobil inkişafda çox faydalı tapdım. Bu həm platformalar üçün eyni rəngli göydən istifadə etməyə imkan verir. Istədiyiniz təqdirdə, atributu və ya Apache lisenziyası altında istifadə etməyin.

 #import "UIColor+HexString.h" @interface UIColor(HexString) + (UIColor *) colorWithHexString: (NSString *) hexString; + (CGFloat) colorComponentFrom: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length; @end @implementation UIColor(HexString) + (UIColor *) colorWithHexString: (NSString *) hexString { NSString *colorString = [[hexString stringByReplacingOccurrencesOfString: @"#" withString: @""] uppercaseString]; CGFloat alpha, red, blue, green; switch ([colorString length]) { case 3: // #RGB alpha = 1.0f; red = [self colorComponentFrom: colorString start: 0 length: 1]; green = [self colorComponentFrom: colorString start: 1 length: 1]; blue = [self colorComponentFrom: colorString start: 2 length: 1]; break; case 4: // #ARGB alpha = [self colorComponentFrom: colorString start: 0 length: 1]; red = [self colorComponentFrom: colorString start: 1 length: 1]; green = [self colorComponentFrom: colorString start: 2 length: 1]; blue = [self colorComponentFrom: colorString start: 3 length: 1]; break; case 6: // #RRGGBB alpha = 1.0f; red = [self colorComponentFrom: colorString start: 0 length: 2]; green = [self colorComponentFrom: colorString start: 2 length: 2]; blue = [self colorComponentFrom: colorString start: 4 length: 2]; break; case 8: // #AARRGGBB alpha = [self colorComponentFrom: colorString start: 0 length: 2]; red = [self colorComponentFrom: colorString start: 2 length: 2]; green = [self colorComponentFrom: colorString start: 4 length: 2]; blue = [self colorComponentFrom: colorString start: 6 length: 2]; break; default: [NSException raise:@"Invalid color value" format: @"Color value %@ is invalid. It should be a hex value of the form #RBG, #ARGB, #RRGGBB, or #AARRGGBB", hexString]; break; } return [UIColor colorWithRed: red green: green blue: blue alpha: alpha]; } + (CGFloat) colorComponentFrom: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length { NSString *substring = [string substringWithRange: NSMakeRange(start, length)]; NSString *fullHex = length == 2 ? substring : [NSString stringWithFormat: @"%@%@", substring, substring]; unsigned hexComponent; [[NSScanner scannerWithString: fullHex] scanHexInt:  return hexComponent / 255.0; } @end 
177
24 авг. Micah Hainline tərəfindən verilmiş cavab 24 Avqust. 2011-08-24 22:06 '11 at 10:06 pm 2011-08-24 22:06

Bir hexadecimal simli bir UIColor çıxarılması haqqında OP UIColor necə həll etmək üçün yaxşı bir UIColor var. Aşağıda göstərilən həll başqalarından fərqlənir, çünki "0x" və ya "#" daxil ola bilən string dəyərlərini dəstəkləyir, hexadecimal simli təmsilə prefiks ... (İstifadə bax)

İşdə əsas bit ..

 - (UIColor *)getUIColorObjectFromHexString:(NSString *)hexStr alpha:(CGFloat)alpha { // Convert hex string to an integer unsigned int hexint = [self intFromHexString:hexStr]; // Create color object, specifying alpha as well UIColor *color = [UIColor colorWithRed:((CGFloat) ((hexint  0xFF0000) >> 16))/255 green:((CGFloat) ((hexint  0xFF00) >> 8))/255 blue:((CGFloat) (hexint  0xFF))/255 alpha:alpha]; return color; } 

Yardımçı metod.

 - (unsigned int)intFromHexString:(NSString *)hexStr { unsigned int hexInt = 0; // Create scanner NSScanner *scanner = [NSScanner scannerWithString:hexStr]; // Tell scanner to skip the # character [scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"#"]]; // Scan hex value [scanner scanHexInt: return hexInt; } 

Ərizə:

 NSString *hexStr1 = @"123ABC"; NSString *hexStr2 = @"#123ABC"; NSString *hexStr3 = @"0x123ABC"; UIColor *color1 = [self getUIColorObjectFromHexString:hexStr1 alpha:.9]; NSLog(@"UIColor: %@", color1); UIColor *color2 = [self getUIColorObjectFromHexString:hexStr2 alpha:.9]; NSLog(@"UIColor: %@", color2); UIColor *color3 = [self getUIColorObjectFromHexString:hexStr3 alpha:.9]; NSLog(@"UIColor: %@", color3); 

Tam istinad məqaləsi

Swift 2 +

Mən bu həllini Swift 2.2-ə köçürdüm. alpha parametresini varsayılan değer 1.0 ile isteğe bağlı bir alpha değiştirdiğimi unutmayın. Swift 2.2-də NSScanner sinfi kimi UInt32 üçün int növünü UInt32 .

 func colorWithHexString(hexString: String, alpha:CGFloat? = 1.0) -> UIColor { // Convert hex string to an integer let hexint = Int(self.intFromHexString(hexString)) let red = CGFloat((hexint  0xff0000) >> 16) / 255.0 let green = CGFloat((hexint  0xff00) >> 8) / 255.0 let blue = CGFloat((hexint  0xff) >> 0) / 255.0 let alpha = alpha! // Create color object, specifying alpha as well let color = UIColor(red: red, green: green, blue: blue, alpha: alpha) return color } func intFromHexString(hexStr: String) -> UInt32 { var hexInt: UInt32 = 0 // Create scanner let scanner: NSScanner = NSScanner(string: hexStr) // Tell scanner to skip the # character scanner.charactersToBeSkipped = NSCharacterSet(charactersInString: "#") // Scan hex value scanner.scanHexInt( return hexInt } 

Swift 4 +

4 sürətlə tətbiq olunan dəyişikliklərlə eyni məntiqi istifadə edərək,

 func colorWithHexString(hexString: String, alpha:CGFloat? = 1.0) -> UIColor { // Convert hex string to an integer let hexint = Int(self.intFromHexString(hexStr: hexString)) let red = CGFloat((hexint  0xff0000) >> 16) / 255.0 let green = CGFloat((hexint  0xff00) >> 8) / 255.0 let blue = CGFloat((hexint  0xff) >> 0) / 255.0 let alpha = alpha! // Create color object, specifying alpha as well let color = UIColor(red: red, green: green, blue: blue, alpha: alpha) return color } func intFromHexString(hexStr: String) -> UInt32 { var hexInt: UInt32 = 0 // Create scanner let scanner: Scanner = Scanner(string: hexStr) // Tell scanner to skip the # character scanner.charactersToBeSkipped = CharacterSet(charactersIn: "#") // Scan hex value scanner.scanHexInt32( return hexInt } 

Renk Hex Referansları

HTML rəng adları və kodları

Renk hex rəng kodları

47
29 сент. Cavab Tommie C tərəfindən verilmişdir 29 sentyabr. 2013-09-29 02:53 '13 at 2:53 2013-09-29 02:53

Bu bir hex simli alır və bir UIColor qaytarır funksiyası.
(Hexadecimal strings hər hansı bir formata daxil edə bilərsiniz: #ffffff və ya ffffff )

Ərizə:

 var color1 = hexStringToUIColor("#d3d3d3") 

Swift 4:

 func hexStringToUIColor (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( 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) ) } 

Swift 3:

 func hexStringToUIColor (hex:String) -> UIColor { var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased() if (cString.hasPrefix("#")) { cString.remove(at: cString.startIndex) } if ((cString.characters.count) != 6) { return UIColor.gray } var rgbValue:UInt32 = 0 Scanner(string: cString).scanHexInt32( 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) ) } 

Swift 2:

 func hexStringToUIColor (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( 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) ) } 



Mənbə: arshad / gist: de147c42d7b3063ef7bc

42
29 нояб. Cavab Ethan Strider noyabrın 29-da verilir. 2014-11-29 17:57 '14 da 17:57 2014-11-29 17:57

Bu kateqoriya istifadə edin:

faylda UIColor + Hexadecimal.h

 #import <UIKit/UIKit.h> @interface UIColor(Hexadecimal) + (UIColor *)colorWithHexString:(NSString *)hexString; @end 

UIColor + Hexadecimal.m faylında

 #import "UIColor+Hexadecimal.h" @implementation UIColor(Hexadecimal) + (UIColor *)colorWithHexString:(NSString *)hexString { unsigned rgbValue = 0; NSScanner *scanner = [NSScanner scannerWithString:hexString]; [scanner setScanLocation:1]; // bypass '#' character [scanner scanHexInt: return [UIColor colorWithRed:((rgbValue  0xFF0000) >> 16)/255.0 green:((rgbValue  0xFF00) >> 8)/255.0 blue:(rgbValue  0xFF)/255.0 alpha:1.0]; } @end 

Sınıfta istifadə etmək istəyirəm:

 #import "UIColor+Hexadecimal.h" 

 [UIColor colorWithHexString:@"#6e4b4b"]; 
36
20 нояб. Cavab Damien Romito 20 noyabrda verilir . 2014-11-20 17:59 '14 at 17:59 2014-11-20 17:59

Müxtəlif cavablar və yerlərdən birləşdirilmiş uzantıları istifadə edərək, böyük Swift tətbiq (Xcode 7 üçün yeniləndi). Sonda simli uzantıya da ehtiyac duyacaqsınız.

İstifadə edin:

 let hexColor = UIColor(hex: "#00FF00") 

Qeyd. Alfa kanalı üçün standart altı rəqəmli hexadecimal dəyərin sonunda iki əlavə rəqəm üçün bir seçim əlavə etdim ( 00 - 99 dəyərini 00 ). Əgər bu sizi incitməsə, onu silin. Əlavə bir alfa parametrini keçmək üçün tətbiq edə bilərsiniz.

Daxili:

 extension UIColor { convenience init(var hex: String) { var alpha: Float = 100 let hexLength = hex.characters.count if !(hexLength == 7 || hexLength == 9) { // A hex must be either 7 or 9 characters (#RRGGBBAA) print("improper call to 'colorFromHex', hex length must be 7 or 9 chars (#GGRRBBAA)") self.init(white: 0, alpha: 1) return } if hexLength == 9 { // Note: this uses String subscripts as given below alpha = hex[7...8].floatValue hex = hex[0...6] } // Establishing the rgb color var rgb: UInt32 = 0 let s: NSScanner = NSScanner(string: hex) // Setting the scan location to ignore the leading `#` s.scanLocation = 1 // Scanning the int into the rgb colors s.scanHexInt( // Creating the UIColor from hex int self.init( red: CGFloat((rgb  0xFF0000) >> 16) / 255.0, green: CGFloat((rgb  0x00FF00) >> 8) / 255.0, blue: CGFloat(rgb  0x0000FF) / 255.0, alpha: CGFloat(alpha / 100) ) } } 

Line uzantıları:
Float mənbəyi
Substrinq mənbəyi

 extension String {  var floatValue: Float { return (self as NSString).floatValue }  subscript (r: Range<Int>) -> String { get { let start = self.startIndex.advancedBy(r.startIndex) let end = self.startIndex.advancedBy(r.endIndex - 1) return self.substringWithRange(start..<end) } } } 
27
23 марта '15 в 22:34 2015-03-23 22:34 Cavab Firon tərəfindən 23 mart 'da 22:34' də verilir 2015-03-23 ​​22:34

Bir hex CGColor bir UIColor (ya da CGColor ) haqqında bildiyim inline dönüşüm yoxdur. Bununla belə, asanlıqla bu məqsəd üçün bir neçə funksiyanı yaza bilərsiniz - məsələn, uicolor komponentlərinə çıxış üçün bir iphone inkişafına baxın .

26
13 окт. Adəm Wright tərəfindən verilmiş cavabı Oct 13 2009-10-13 16:06 '09 at 16:06, 2009-10-13 16:06

Bu kimi bir uzantı edə bilərsiniz.

 extension UIColor{ convenience init(rgb: UInt, alphaVal: CGFloat) { self.init( red: CGFloat((rgb  0xFF0000) >> 16) / 255.0, green: CGFloat((rgb  0x00FF00) >> 8) / 255.0, blue: CGFloat(rgb  0x0000FF) / 255.0, alpha: alphaVal ) } } 

Və hər yerdə istifadə edin

 UIColor(rgb: 0xffffff, alphaVal: 0.2) 
24
27 мая '15 в 9:51 2015-05-27 09:51 Cavab Manu Gupta tərəfindən verilir May 27, '15 at 9:51 AM 2015-05-27 09:51

Bunun üçün UIColor UIColor + PXExtensions kateqoriyasını tapdım .

Istifadə: UIColor *mycolor = [UIColor pxColorWithHexValue:@"#BADA55"];

Və yalnız halda, mənim sözümün bağlantısı uğursuz zaman, burada tətbiq olunan kod:

 // // UIColor+PXExtensions.m // #import "UIColor+UIColor_PXExtensions.h" @implementation UIColor (UIColor_PXExtensions) + (UIColor*)pxColorWithHexValue:(NSString*)hexValue { //Default UIColor *defaultResult = [UIColor blackColor]; //Strip prefixed # hash if ([hexValue hasPrefix:@"#"]  [hexValue length] > 1) { hexValue = [hexValue substringFromIndex:1]; } //Determine if 3 or 6 digits NSUInteger componentLength = 0; if ([hexValue length] == 3) { componentLength = 1; } else if ([hexValue length] == 6) { componentLength = 2; } else { return defaultResult; } BOOL isValid = YES; CGFloat components[3]; //Seperate the R,G,B values for (NSUInteger i = 0; i < 3; i++) { NSString *component = [hexValue substringWithRange:NSMakeRange(componentLength * i, componentLength)]; if (componentLength == 1) { component = [component stringByAppendingString:component]; } NSScanner *scanner = [NSScanner scannerWithString:component]; unsigned int value; isValid  [scanner scanHexInt: components[i] = (CGFloat)value / 256.0f; } if (!isValid) { return defaultResult; } return [UIColor colorWithRed:components[0] green:components[1] blue:components[2] alpha:1.0]; } @end 
14
13 янв. Cavab Hlung Jan 13 tərəfindən verilir 2013-01-13 19:09 '13 at 07:09 PM 2013-01-13 19:09

Bu başqa bir alternativdir.

 - (UIColor *)colorWithRGBHex:(UInt32)hex { int r = (hex >> 16)  0xFF; int g = (hex >> 8)  0xFF; int b = (hex)  0xFF; return [UIColor colorWithRed:r / 255.0f green:g / 255.0f blue:b / 255.0f alpha:1.0f]; } 
13
03 июля '12 в 20:50 2012-07-03 20:50 cavab iyul ayının 3-də saat 08: 00-da saat 20: 50-də verilir

Bir HEX dizesini real UIColor'a çevirmək üçün müxtəlif online vasitələrdən istifadə edə bilərsiniz. Uicolor.org və ya UI rəngini özelleştirin . Nəticə Objective-C koduna çevrilir, məsələn:

 [UIColor colorWithRed:0.93 green:0.80 blue:0.80 alpha:1.0]; 

Tətbiqə nə əlavə edə bilərsiniz. Bu kömək edir!

12
21 окт. Zorayr Oct 21 verildi . 2013-10-21 00:54 '13 'da 0:54 2013-10-21 00:54

sürətli versiya. Bir funksiya və ya uzantı kimi istifadə edin.

Funksiyası
  func UIColorFromRGB(colorCode: String, alpha: Float = 1.0) -> UIColor{ var scanner = NSScanner(string:colorCode) var color:UInt32 = 0; scanner.scanHexInt( let mask = 0x000000FF let r = CGFloat(Float(Int(color >> 16)  mask)/255.0) let g = CGFloat(Float(Int(color >> 8)  mask)/255.0) let b = CGFloat(Float(Int(color)  mask)/255.0) return UIColor(red: r, green: g, blue: b, alpha: CGFloat(alpha)) } 
Genişlənmə
 extension UIColor { convenience init(colorCode: String, alpha: Float = 1.0){ var scanner = NSScanner(string:colorCode) var color:UInt32 = 0; scanner.scanHexInt( let mask = 0x000000FF let r = CGFloat(Float(Int(color >> 16)  mask)/255.0) let g = CGFloat(Float(Int(color >> 8)  mask)/255.0) let b = CGFloat(Float(Int(color)  mask)/255.0) self.init(red: r, green: g, blue: b, alpha: CGFloat(alpha)) } } 
Necə zəng
 let hexColorFromFunction = UIColorFromRGB("F4C124", alpha: 1.0) let hexColorFromExtension = UIColor(colorCode: "F4C124", alpha: 1.0) 
Ayrıca, interfeys dizayneri ilə Hex Color də müəyyən edə bilərsiniz.

2019

19 июля '15 в 20:39 2015-07-19 20:39 Cavab fatihyildizhan 19 iyul '20 saat 20:39' də verilir 2015-07-19 20:39

Cocoapod dəstəyi ilə yaxşı

https://github.com/mRs-/HexColors

 // with hash NSColor *colorWithHex = [NSColor colorWithHexString:@"#ff8942" alpha:1]; // wihtout hash NSColor *secondColorWithHex = [NSColor colorWithHexString:@"ff8942" alpha:1]; // short handling NSColor *shortColorWithHex = [NSColor colorWithHexString:@"fff" alpha:1] 
7
10 нояб. Cavab 10 noyabr tarixində Nath tərəfindən verilmişdir. 2013-11-10 13:22 '13 at 13:22 2013-11-10 13:22

Alfa ilə digər versiyası

 #define UIColorFromRGBA(rgbValue) [UIColor colorWithRed:((float)((rgbValue  0xFF000000) >> 24))/255.0 green:((float)((rgbValue  0xFF0000) >> 16))/255.0 blue:((float)((rgbValue  0xFF00) >> 8 ))/255.0 alpha:((float)((rgbValue  0xFF))/255.0)] 
5
18 янв. Cavab Jan 18 tərəfindən verilir 2013-01-18 14:17 '13 at 14:17 2013-01-18 14:17

@Tom cavabının sürətli bərabərliyi, şəffaflığı dəstəkləmək üçün RGBA Int dəyərinə baxmayaraq:

 func colorWithHex(aHex: UInt) -> UIColor { return UIColor(red: CGFloat((aHex  0xFF000000) >> 24) / 255, green: CGFloat((aHex  0x00FF0000) >> 16) / 255, blue: CGFloat((aHex  0x0000FF00) >> 8) / 255, alpha: CGFloat((aHex  0x000000FF) >> 0) / 255) } //usage var color = colorWithHex(0x7F00FFFF) 

Və bir string istifadə etmək istəyirsinizsə, strtoul istifadə edə bilərsiniz:

 var hexString = "0x7F00FFFF" let num = strtoul(hexString, nil, 16) var colorFromString = colorWithHex(num) 
4
19 мая '15 в 11:37 2015-05-19 11:37 cavab 19 may, saat 15: 00 -da verilir

Burada UIColor üçün bir uzantı kimi yazılmış Swift 1.2 versiyası. Bunu etməyə imkan verir

 let redColor = UIColor(hex: "#FF0000") 

Bunu etməyə ən təbii yol olduğuna inanıram.

 extension UIColor { // Initialiser for strings of format '#_RED_GREEN_BLUE_' convenience init(hex: String) { let redRange = Range<String.Index>(start: hex.startIndex.advancedBy(1), end: hex.startIndex.advancedBy(3)) let greenRange = Range<String.Index>(start: hex.startIndex.advancedBy(3), end: hex.startIndex.advancedBy(5)) let blueRange = Range<String.Index>(start: hex.startIndex.advancedBy(5), end: hex.startIndex.advancedBy(7)) var red : UInt32 = 0 var green : UInt32 = 0 var blue : UInt32 = 0 NSScanner(string: hex.substringWithRange(redRange)).scanHexInt( NSScanner(string: hex.substringWithRange(greenRange)).scanHexInt( NSScanner(string: hex.substringWithRange(blueRange)).scanHexInt( self.init( red: CGFloat(red) / 255, green: CGFloat(green) / 255, blue: CGFloat(blue) / 255, alpha: 1 ) } } 
3
27 мая '15 в 11:45 2015-05-27 11:45 Cavab Morgan Wilde tərəfindən 27 May 'da 11:45' də verilir 2015-05-27 11:45

"FFF" və ya "FFFFFF""FFFFFF" istifadə etməyə imkan verən digər bir tətbiq:

 + (UIColor *) colorFromHexString:(NSString *)hexString alpha: (CGFloat)alpha{ NSString *cleanString = [hexString stringByReplacingOccurrencesOfString:@"#" withString:@""]; if([cleanString length] == 3) { cleanString = [NSString stringWithFormat:@"%@%@%@%@%@%@", [cleanString substringWithRange:NSMakeRange(0, 1)],[cleanString substringWithRange:NSMakeRange(0, 1)], [cleanString substringWithRange:NSMakeRange(1, 1)],[cleanString substringWithRange:NSMakeRange(1, 1)], [cleanString substringWithRange:NSMakeRange(2, 1)],[cleanString substringWithRange:NSMakeRange(2, 1)]]; } if([cleanString length] == 6) { cleanString = [cleanString stringByAppendingString:@"ff"]; } unsigned int baseValue; [[NSScanner scannerWithString:cleanString] scanHexInt: float red = ((baseValue >> 24)  0xFF)/255.0f; float green = ((baseValue >> 16)  0xFF)/255.0f; float blue = ((baseValue >> 8)  0xFF)/255.0f; return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } 
3
26 июня '13 в 16:42 2013-06-26 16:42 Cavab Renato Lochetti tərəfindən 26 iyun 'da 16:42' də verilir 2013-06-26 16:42

UIColor üçün zərif bir uzantı yaradın:

 extension UIColor { convenience init(string: String) { var uppercasedString = string.uppercased() uppercasedString.remove(at: string.startIndex) var rgbValue: UInt32 = 0 Scanner(string: uppercasedString).scanHexInt32( let red = CGFloat((rgbValue  0xFF0000) >> 16) / 255.0 let green = CGFloat((rgbValue  0x00FF00) >> 8) / 255.0 let blue = CGFloat(rgbValue  0x0000FF) / 255.0 self.init(red: red, green: green, blue: blue, alpha: 1) } } 

Qırmızı rəng yaradın:

 let red = UIColor(string: "#ff0000") 
2
10 мая '17 в 13:18 2017-05-10 13:18 Cavab Bartłomiej Semańczyk tərəfindən 10 May '17 'də 13:18 2017-05-10 13:18' də verilir
  You Can Get UIColor From String Code Like circularSpinner.fillColor = [self getUIColorObjectFromHexString:@"27b8c8" alpha:9]; //Function For Hex Color Use - (unsigned int)intFromHexString:(NSString *)hexStr { unsigned int hexInt = 0; // Create scanner NSScanner *scanner = [NSScanner scannerWithString:hexStr]; // Tell scanner to skip the # character [scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"#"]]; // Scan hex value [scanner scanHexInt: return hexInt; } - (UIColor *)getUIColorObjectFromHexString:(NSString *)hexStr alpha:(CGFloat)alpha { // Convert hex string to an integer unsigned int hexint = [self intFromHexString:hexStr]; // Create color object, specifying alpha as well UIColor *color = [UIColor colorWithRed:((CGFloat) ((hexint  0xFF0000) >> 16))/255 green:((CGFloat) ((hexint  0xFF00) >> 8))/255 blue:((CGFloat) (hexint  0xFF))/255 alpha:alpha]; return color; } /Function For Hex Color Use - (unsigned int)intFromHexString:(NSString *)hexStr { unsigned int hexInt = 0; // Create scanner NSScanner *scanner = [NSScanner scannerWithString:hexStr]; // Tell scanner to skip the # character [scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"#"]]; // Scan hex value [scanner scanHexInt: return hexInt; } - (UIColor *)getUIColorObjectFromHexString:(NSString *)hexStr alpha:(CGFloat)alpha { // Convert hex string to an integer unsigned int hexint = [self intFromHexString:hexStr]; // Create color object, specifying alpha as well UIColor *color = [UIColor colorWithRed:((CGFloat) ((hexint  0xFF0000) >> 16))/255 green:((CGFloat) ((hexint  0xFF00) >> 8))/255 blue:((CGFloat) (hexint  0xFF))/255 alpha:alpha]; return color; } 
2
29 апр. Maniş Saini tərəfindən verilmiş cavab Apr 29 2014-04-29 13:56 '14 saat 13:56 'də 2014-04-29 13:56

Mən rəngdən başqa alfa verməyi sevirəm, buna görə də öz kateqoriyam yazıram

 + (UIColor *) colorWithHex:(int)color { float red = (color  0xff000000) >> 24; float green = (color  0x00ff0000) >> 16; float blue = (color  0x0000ff00) >> 8; float alpha = (color  0x000000ff); return [UIColor colorWithRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:alpha/255.0]; } 

bu kimi istifadə etmək asan

 [UIColor colorWithHex:0xFF0000FF]; //Red [UIColor colorWithHex:0x00FF00FF]; //Green [UIColor colorWithHex:0x00FF00FF]; //Blue [UIColor colorWithHex:0x0000007F]; //transparent black 
2
18 апр. cavab verildi adalı 18 apr. 2015-04-18 10:37 '15 saat 10:37 'da 2015-04-18 10:37

sürətli 1.2 üçün yeniləndi

 class func colorWithHexString (hex:String) -> UIColor { var cString: NSString = hex.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).uppercaseString if (cString.hasPrefix("#")) { cString = cString.substringFromIndex(1) } if (count(cString as String) != 6) { return UIColor.grayColor() } var rString: String = cString.substringToIndex(2) var gString: String = (cString.substringFromIndex(2) as NSString).substringToIndex(2) var bString: String = (cString.substringFromIndex(4) as NSString).substringToIndex(2) var r:CUnsignedInt = 0, g:CUnsignedInt = 0, b:CUnsignedInt = 0; NSScanner(string: rString).scanHexInt( NSScanner(string: gString).scanHexInt( NSScanner(string: bString).scanHexInt( return UIColor(red: CGFloat(Float(r) / 255.0), green: CGFloat(Float(g) / 255.0), blue: CGFloat(Float(b) / 255.0), alpha: CGFloat(1)) } 
2
17 апр. Cavab 17 Apreldə RiceAndBytes tərəfindən verilir 2015-04-17 20:24 '15 at 8:24 PM 2015-04-17 20:24
 extension UIColor { class func fromHexaString(hex:String) -> UIColor { let scanner = Scanner(string: hex) scanner.scanLocation = 0 var rgbValue: UInt64 = 0 scanner.scanHexInt64( 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) ) } } //you can call like this. UIColor.fromHexaString(hex:3276b1) 
2
28 июня '17 в 14:38 2017-06-28 14:38 Cavab Vinayak tərəfindən 28 iyun '14' də 14:38 2017-06-28 14:38 'də verilir
 extension UIColor { convenience init(hexaString: String, alpha: CGFloat = 1) { let chars = Array(hexaString.characters) self.init(red: CGFloat(strtoul(String(chars[1...2]),nil,16))/255, green: CGFloat(strtoul(String(chars[3...4]),nil,16))/255, blue: CGFloat(strtoul(String(chars[5...6]),nil,16))/255, alpha: alpha)} } 

İstifadə edin:

 let redColor = UIColor(hexaString: "#FF0000") // r 1,0 g 0,0 b 0,0 a 1,0 let transparentRed = UIColor(hexaString: "#FF0000", alpha: 0.5) // r 1,0 g 0,0 b 0,0 a 0,5 
2
01 нояб. Leo Dabus tərəfindən verilmiş cavab Noyabr 01 2015-11-01 07:01 '15 at 7:01 AM 2015-11-01 07:01

Sürətli 2.0 + üçün. Bu kod mənim üçün böyük işləyir.

 extension UIColor { /// UIColor(hexString: "#cc0000") internal convenience init?(hexString:String) { guard hexString.characters[hexString.startIndex] == Character("#") else { return nil } guard hexString.characters.count == "#000000".characters.count else { return nil } let digits = hexString.substringFromIndex(hexString.startIndex.advancedBy(1)) guard Int(digits,radix:16) != nil else{ return nil } let red = digits.substringToIndex(digits.startIndex.advancedBy(2)) let green = digits.substringWithRange(Range<String.Index>(start: digits.startIndex.advancedBy(2), end: digits.startIndex.advancedBy(4))) let blue = digits.substringWithRange(Range<String.Index>(start:digits.startIndex.advancedBy(4), end:digits.startIndex.advancedBy(6))) let redf = CGFloat(Double(Int(red, radix:16)!) / 255.0) let greenf = CGFloat(Double(Int(green, radix:16)!) / 255.0) let bluef = CGFloat(Double(Int(blue, radix:16)!) / 255.0) self.init(red: redf, green: greenf, blue: bluef, alpha: CGFloat(1.0)) } } 

Bu kod bir format string yoxlamasını ehtiva edir. məsələn.

 let aColor = UIColor(hexString: "#dadada")! let failed = UIColor(hexString: "123zzzz") 

Və bildiyim qədər, kodumun uğursuz dövlətin semantikasını qoruyub saxlamaması və isteğe bağlı bir dəyəri geri qaytarması yoxdur. Və bu ən yaxşı cavab olmalıdır.

1
07 янв. Cavab AntiMoron Jan 07 tərəfindən verilir 2016-01-07 10:14 '16 'da 10:14' də 2016-01-07 10:14 'da
  //UIColorWithHexString static UIColor * UIColorWithHexString(NSString *hex) { unsigned int rgb = 0; [[NSScanner scannerWithString: [[hex uppercaseString] stringByTrimmingCharactersInSet: [[NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEF"] invertedSet]]] scanHexInt: return [UIColor colorWithRed:((CGFloat)((rgb  0xFF0000) >> 16)) / 255.0 green:((CGFloat)((rgb  0xFF00) >> 8)) / 255.0 blue:((CGFloat)(rgb  0xFF)) / 255.0 alpha:1.0]; } 

İstifadə

 self.view.backgroundColor = UIColorWithHexString(@"#0F35C0"); 
1
23 нояб. Cavab 23 noyabrda Usman tərəfindən verilir. 2017-11-23 21:36 '17 saat 21:36 'də 2017-11-23 21:36

Rəngin alfa dəyərini idarə edən və mükəmməl səhv idarə edən həll variantının Swift 2.0 versiyası:

 func RGBColor(hexColorStr : String) -> UIColor?{ var red:CGFloat = 0.0 var green:CGFloat = 0.0 var blue:CGFloat = 0.0 var alpha:CGFloat = 1.0 if hexColorStr.hasPrefix("#"){ let index = hexColorStr.startIndex.advancedBy(1) let hex = hexColorStr.substringFromIndex(index) let scanner = NSScanner(string: hex) var hexValue: CUnsignedLongLong = 0 if scanner.scanHexLongLong( { if hex.characters.count == 6 { red = CGFloat((hexValue  0xFF0000) >> 16) / 255.0 green = CGFloat((hexValue  0x00FF00) >> 8) / 255.0 blue = CGFloat(hexValue  0x0000FF) / 255.0 } else if hex.characters.count == 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 } else { print("invalid hex code string, length should be 7 or 9", terminator: "") return nil } } else { print("scan hex error") return nil } } let color: UIColor = UIColor(red:CGFloat(red), green: CGFloat(green), blue:CGFloat(blue), alpha: alpha) return color } 
1
16 февр. Teja Kumar Bethina tərəfindən verilmiş cavab 16 fevral. 2016-02-16 13:10 '16 saat 13:10 'da 2016-02-16 13:10

Nəticədə, mən UIColor üçün bir kateqoriya yaradıb, bu da digər layihələrimdə təkrar istifadə edə bilərəm. Github: https://github.com/mattquiros/UIColorHexColor

İstifadəsi aşağıdakılardır:

 UIColor *customRedColor = [UIColor colorFromHex:0x990000]; 

Bu, simli keçmədən və bir nöqtəyə çevirəndən və daha sonra bitləri dəyişmədən çox daha sürətli.

Вы также можете импортировать категорию из своего файла .pch , чтобы вы могли легко использовать colorFromHex везде в своем приложении, например, встроенный в UIColor :

 #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> // Your other stuff here... #import "UIColor+HexColor.h" #endif 
1
ответ дан Matt Quiros 08 февр. '14 в 13:50 2014-02-08 13:50