使用十六进制色值表示UIColor

假如你有一个值为 @”0A5CEA” (字符串类型的16进制色值) ,可以如下方法创建UIColor对象:

UIColor *color = [UIColor colorwithHexString:@"0A5CEA" alpha:.9];

UIColor Category

然后我们来创建一个UIColor Category,

声明代码 UIColor+fromHex.h :

@interface UIColor (fromHex)
+ (UIColor *)colorwithHexString:(NSString *)hexStr alpha:(CGFloat)alpha;
@end

implementation代码 UIColor+fromHex.m :

 1 @implementation UIColor (fromHex)
 2
 3 + (UIColor *)colorwithHexString:(NSString *)hexStr alpha:(CGFloat)alpha;
 4 {
 5   //-----------------------------------------
 6   // Convert hex string to an integer
 7   //-----------------------------------------
 8   unsigned int hexint = 0;
 9
10   // Create scanner
11   NSScanner *scanner = [NSScanner scannerWithString:hexStr];
12
13   // Tell scanner to skip the # character
14   [scanner setCharactersToBeSkipped:[NSCharacterSet
15     characterSetWithCharactersInString:@"#"]];
16   [scanner scanHexInt:&hexint];
17
18   //-----------------------------------------
19   // Create color object, specifying alpha
20   //-----------------------------------------
21   UIColor *color =
22     [UIColor colorWithRed:((CGFloat) ((hexint & 0xFF0000) >> 16))/255
23     green:((CGFloat) ((hexint & 0xFF00) >> 8))/255
24     blue:((CGFloat) (hexint & 0xFF))/255
25     alpha:alpha];
26
27   return color;
28 }
29
30 @end

第8-15行 对 hex value 转换为 unsigned integer.

第20-24行 创建一个 UIColor object 通过位操作 ‘&’ 计算各RGB颜色值, 同时除以255得到float值。

下面示例代码, 包括十六进制值格式“0x0A5CEA” 和@”#0A5CEA” (后者一般用于web开发):

 1 NSString *hexStr1 = @"123ABC";
 2 NSString *hexStr2 = @"#123ABC";
 3 NSString *hexStr3 = @"0x123ABC";
 4
 5 UIColor *color1 = [UIColor colorwithHexString:hexStr1 alpha:.9];
 6 NSLog(@"UIColor: %@", color1);
 7
 8 UIColor *color2 = [UIColor colorwithHexString:hexStr2 alpha:.9];
 9 NSLog(@"UIColor: %@", color2);
10
11 UIColor *color3 = [UIColor colorwithHexString:hexStr3 alpha:.9];
12 NSLog(@"UIColor: %@", color3);

结果如下:

UIColor: UIDeviceRGBColorSpace 0.0705882 0.227451 0.737255 0.9
UIColor: UIDeviceRGBColorSpace 0.0705882 0.227451 0.737255 0.9
UIColor: UIDeviceRGBColorSpace 0.0705882 0.227451 0.737255 0.9

使用十六进制色值表示UIColor,布布扣,bubuko.com

时间: 2024-08-08 21:55:06

使用十六进制色值表示UIColor的相关文章

十六进制函数转换UIColor对象

在实际开发中 有时美工会给我们一种颜色值(形如#FF0000)去设置某个view的背景色,这时我们需要把这种十六进制的值转换为UIColor对象 下面这个方法就很有用了: - (UIColor *) stringTOColor:(NSString *)str { if (!str || [str isEqualToString:@""]) { return nil; } unsigned red,green,blue; NSRange range; range.length = 2;

iOS 通过HEX(十六进制)得到一个UIColor的对象

inline static UIColor* getColorFromHex(NSString *hexColor) { if (hexColor == nil) { return nil; } unsigned int red, green, blue; NSRange range; range.length = 2; range.location = 1; [[NSScanner scannerWithString:[hexColor substringWithRange:range]] s

将十六进制色值转换成Color

在给Background赋值时,除了自带的Red,Blue,Black等,可以通过以下方法赋予其他颜色. 主要是将Hex转换成ARGB(A:alpha,表示透明度.R:Red.G:Green.B:Blue),其中ARGB取值均在0--255之间 该方法传入的字符串参数可以类似 #21459A 或者 #FF21459A public static Color? GetColorFromHex(String colorStr) //? 表示返回值可以为null { if (colorStr != n

使用类目为UIColor类扩展一个类方法实现十六进制字符串转化成UIColor对象

#import <UIKit/UIKit.h> @interface UIColor (ColorWithHexStrig) + (UIColor *)colorWithHexString:(NSString *)hexString; @end #import "UIColor+ColorWithHexStrig.h" @implementation UIColor (ColorWithHexStrig) //根据十六进制数值获取UIColor + (UIColor *)c

IOS 十六进制字符串转换成UIColor

/** * 十六进制转换成UIColor * * @param stringToConvert 十六进制字符串 * * @return UIColor */ +(UIColor *) hexStringToColor: (NSString *) stringToConvert { NSString *cString = [[stringToConvert stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCha

UIColor与十六进制字符串互转

UIColor转十六进制字符串 方法一:经过测试发现部分颜色会转化为#fffff(五个f),转化残缺导致最后颜色无法还原,不推荐使用. // UIColor转#ffffff格式的字符串 + (NSString *)hexFromUIColor:(UIColor *)color { if (CGColorGetNumberOfComponents(color.CGColor) < 4) { const CGFloat *components = CGColorGetComponents(color

Android使用java的Math.Random获取随机色值

网上有个ColorPicker开源项目,选择颜色值.而在这里我想实现的是动态修改一个view的背景色. 开一个线程,每隔1s修改一次view的背景色. 我们知道在android里设置一个view的背景色有 framelayout.setBackgroundColor(Color.parseColor("#"+arg0.obj)); 就是用android的Color类去解析一个带#号的十六进制色值.现在要做的是动态随机获取这个16进制色值. java给我们提供了两种方法获取随机数: 一.

iOS项目开发过程中的目录结构(转)

iOS项目开发过程中的目录结构 我在这个目录结构方面真是吃了不少苦,开始总是觉得快点写快点写,后来发现只有快是不行的,在没有给整个项目的结构有一个清楚的认识和了解之前就匆匆动笔(敲代码啦)是非常冒失的, 好在在后来修改的过程中慢慢琢磨出来一套目录结构,现在发出来给大家参考一下. 项目主目录结构如图: 1.Network主要用于进行网络请求,以及请求完成后对数据进行处理使用, 2.Category:类目,这个文件夹放在这里我觉得是不太准确的,但是具体应该放在哪里我一直无法确实下来 3.Contro

iOS 常用公共方法

iOS常用公共方法 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat size = 0.0; NSError *error; NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error]; if (error) { #ifdef DEBUG NSLog(@&quo