I want to make a conversion from hexadecimal to RGB, but the hexadecimal deal with a string like #FFFFFF. How can I do that?
Asked
Active
Viewed 2.3k times
30
-
Can you specify the language? – Dr Casper Black Nov 24 '10 at 09:32
-
i'm sorry, i've edit it..it is in objective C – R. Dewi Nov 24 '10 at 09:32
-
2Also have a look at: http://stackoverflow.com/questions/3723846 and http://stackoverflow.com/questions/3010216/how-can-i-convert-rgb-hex-string-into-uicolor-in-objective-c – Cody Gray - on strike Nov 24 '10 at 09:46
-
great looking for a companianship to do a app with new creativity – Marios Nov 22 '11 at 05:45
-
use this http://colorcode.globalmaverick.com/ – amar Oct 13 '15 at 18:10
4 Answers
87
I've just expanded my UIColor Category for you.
use it like UIColor *green = [UIColor colorWithHexString:@"#00FF00"];
//
// UIColor_Categories.h
//
// Created by Matthias Bauch on 24.11.10.
// Copyright 2010 Matthias Bauch. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface UIColor(MBCategory)
+ (UIColor *)colorWithHex:(UInt32)col;
+ (UIColor *)colorWithHexString:(NSString *)str;
@end
//
// UIColor_Categories.m
//
// Created by Matthias Bauch on 24.11.10.
// Copyright 2010 Matthias Bauch. All rights reserved.
//
#import "UIColor_Categories.h"
@implementation UIColor(MBCategory)
// takes @"#123456"
+ (UIColor *)colorWithHexString:(NSString *)str {
const char *cStr = [str cStringUsingEncoding:NSASCIIStringEncoding];
long x = strtol(cStr+1, NULL, 16);
return [UIColor colorWithHex:x];
}
// takes 0x123456
+ (UIColor *)colorWithHex:(UInt32)col {
unsigned char r, g, b;
b = col & 0xFF;
g = (col >> 8) & 0xFF;
r = (col >> 16) & 0xFF;
return [UIColor colorWithRed:(float)r/255.0f green:(float)g/255.0f blue:(float)b/255.0f alpha:1];
}
@end

Matthias Bauch
- 89,811
- 20
- 225
- 247
-
I know this is old now but I believe that you have to #import
to actual be able to do UIColor(MBCategory) otherwise you get an error saying unable to find @interface UIColor. This could just have been an update since this was written, but it doesn't work without the import. – Popeye Jul 11 '12 at 14:27 -
It should work in a standard iOS project created by Xcode. The whole UIKit is imported in the precompiled header (ProjectName-Prefix.pch). – Matthias Bauch Jul 11 '12 at 16:22
-
This produces a warning on conversion from long to UInt32 which is unsigned. To remove this just cast the long to UInt32. You will never get negative numbers so it should be OK to do this. – Guy Lowe Apr 29 '19 at 05:17
25
//In your header file
#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]
//usage
UIColor *color = UIColorFromRGB(0x000000)
//you can also use it inline
[text.textField setTextColor:UIColorFromRGB(0xcccccc)];
-
2
-
This isn't giving proper results. Try this "#FFA300" to test the method. – swiftache Sep 29 '21 at 10:43
5
Swift
It is very useful
extension UIColor {
convenience init(hexString: String) {
let hex = hexString.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)
var int = UInt32()
Scanner(string: hex).scanHexInt32(&int)
let a, r, g, b: UInt32
switch hex.count {
case 3: // RGB (12-bit)
(a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)
case 6: // RGB (24-bit)
(a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)
case 8: // ARGB (32-bit)
(a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)
default:
(a, r, g, b) = (1, 1, 1, 0)
}
self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255)
}
public func hexStringWithAlpha(_ includeAlpha: Bool) -> String {
var r: CGFloat = 0
var g: CGFloat = 0
var b: CGFloat = 0
var a: CGFloat = 0
self.getRed(&r, green: &g, blue: &b, alpha: &a)
if (includeAlpha) {
return String(format: "%02X%02X%02X%02X", Int(r * 255), Int(g * 255), Int(b * 255), Int(a * 255))
} else {
return String(format: "%02X%02X%02X", Int(r * 255), Int(g * 255), Int(b * 255))
}
}
open override var description: String {
return self.hexStringWithAlpha(true)
}
open override var debugDescription: String {
return self.hexStringWithAlpha(true)
}
}
Obj-C
UIColor *organizationColor = [self colorWithHexString:@"#ababab" alpha:1];
- (UIColor *)colorWithHexString:(NSString *)str_HEX alpha:(CGFloat)alpha_range{
int red = 0;
int green = 0;
int blue = 0;
sscanf([str_HEX UTF8String], "#%02X%02X%02X", &red, &green, &blue);
return [UIColor colorWithRed:red/255.0 green:green/255.0 blue:blue/255.0 alpha:alpha_range];
}

Mohamed Jaleel Nazir
- 5,776
- 3
- 34
- 48
0
Based on answers below. For SwiftUI you can do:
extension Color {
init(hex: Int) {
let red = (Double)((hex & 0xFF0000) >> 16) / 255.0
let green = (Double)((hex & 0xFF00) >> 8) / 255.0
let blue = (Double)((hex & 0xFF)) / 255.0
self.init(red: red, green: green, blue: blue, opacity: 1.0)
}
}

Fernando Martínez
- 1,057
- 10
- 13