对UIColor的扩展

UIcolor这个类中,系统给的颜色太少了,虽然给我们提供了一个方法(光的三原色,根据红,绿,蓝光的比例调出很多颜色,RGB)colorWithRed:green:blue:alpha,但是用起来还是很麻烦,在这人给大家介绍一个简单的方法,就是自己对UIColor扩展,写一个方法

先介绍一下要写什么样的方法:

这个方法里我们需要传一个字符串(比如:@"00ff00"),就是一个颜色对应的RGB值,然后返回给我相应的颜色,我们不需要用colorWithRed:green:blue:alpha,写的参数相对比较多,麻烦。

传的是字符串,我们需要把字符串扫描然后转换成十进制,如下:

+(UIColor *)colorWithHexString:(NSString *)stringToConvert

{

// 需要用到NSScanner类,可以扫描字符串,从中挑出我们需要的字符

// 我们需要扫描传过来字符串,从中挑出16进制字符,转换成10进制

// 初始化NSScanner对象scanner

NSScanner *scanner = [NSScanner scannerWithString:stringToConvert];

// 定义一个无符号变量

unsigned hexNum;

// 方法scanHexInt:可以扫描scanner获取16进制的数据转换成10进制赋值给hexNum

// 返回BOOL数据类型,如果没有获得整型数值直接return nil;

if (![scanner scanHexInt:&hexNum]) return nil;

// 获得整型数值后return 调用方法colorWithRGBHex:

return [UIColor colorWithRGBHex:hexNum];

}

+ (UIColor *)colorWithRGBHex:(UInt32)hex {

// 用到位运算符>>(整型对应二进制数右移几个位,舍弃低位,然后获得的二进制数的高位补零,即左端补零)和&(安位与,二进制数的相应位取与)

// 通过下面的表达式可以从类似@"ffaacc"的字符串中提取ff,aa,cc转换成10进制赋值给变量r,g,b

int r = (hex >> 16) & 0xFF;

int g = (hex >> 8) & 0xFF;

int b = (hex) & 0xFF;

// 调用系统的方法colorWithRed:green:blue:alpha,返回我们想要的颜色

return [UIColor colorWithRed:r / 255.0f

green:g / 255.0f

blue:b / 255.0f

alpha:1.0f];

}

新手自己的一些理解,理解错的地方各路大神不吝赐教~~~~~~

自己可以封装成一个demo,应该挺有用的

时间: 2024-10-20 03:46:11

对UIColor的扩展的相关文章

使用类目为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,支持十六进制颜色设置)

新建一个Category,命名为UIColor+Hex,表示UIColor支持十六进制Hex颜色设置. UIColor+Hex.h文件, #import <UIKit/UIKit.h> #define RGBA_COLOR(R, G, B, A) [UIColor colorWithRed:((R) / 255.0f) green:((G) / 255.0f) blue:((B) / 255.0f) alpha:A] #define RGB_COLOR(R, G, B) [UIColor co

iOS:扩展UIColor,支持十六进制颜色设置

来自转载:http://my.oschina.net/leejan97/blog/307491 摘要: 可以直接使用十六进制设置控件的颜色,而不必通过除以255.0进行转换 #define UIColor Category UIBarButtonItem 新建一个Category,命名为UIColor+Hex,表示UIColor支持十六进制Hex颜色设置. UIColor+Hex.h文件 #import <UIKit/UIKit.h> #define RGBA_COLOR(R, G, B, A

iOS开发——完整项目实战Swift篇&amp;百思不得姐Swift版总结(二)

百思不得姐Swift版总结(二) tabBar和NavBar配色方案 一.常规主题色使用点 应用在发布前都会对其主题色进行设置,以统一应用的风格(可能有多套主题).在主题色设置上有几个方面,如下: 1.TabBar部分,设置图片高亮.文本高度颜色 2.NavigationBar部分,设置导航栏颜色及字体颜色 3.应用标签等,设置字体的颜色 4.应用图片主题色 主题色的设置点,大体从上面四个方面着手,图片的主题色我们可通过图片更换的方式进行处理.而通过代码来处理的1-3条,有着不同的处理方法.大家

iOS开发:Swift主题色顶级解决方案

一.常规主题色使用点 应用在发布前都会对其主题色进行设置,以统一应用的风格(可能有多套主题).在主题色设置上有几个方面,如下: 1.TabBar部分,设置图片高亮.文本高度颜色2.NavigationBar部分,设置导航栏颜色及字体颜色3.应用标签等,设置字体的颜色4.应用图片主题色 主题色的设置点,大体从上面四个方面着手,图片的主题色我们可通过图片更换的方式进行处理.而通过代码来处理的 1-3 条,有着不同的处理方法.大家常规处理方法如下: 步骤一:变化分离 1.利用Swift扩展语法扩展UI

论 Swift 开发入门 : 进度条(UIProgressView)

转载请声明出处:http://blog.csdn.net/jinnchang/article/details/44802019 ------------------------------------------------------------------------------------------ 概述 ------------------------------------------------------------------------------------------ 代

iOS中的字符串扫描类NSScanner

新建一个Category,命名为UIColor+Hex,表示UIColor支持十六进制Hex颜色设置. UIColor+Hex.h文件, #import <UIKit/UIKit.h> #define RGBA_COLOR(R, G, B, A) [UIColor colorWithRed:((R) / 255.0f) green:((G) / 255.0f) blue:((B) / 255.0f) alpha:A] #define RGB_COLOR(R, G, B) [UIColor co

Swift主题色顶级解决方案

一.常规主题色使用点 应用在发布前都会对其主题色进行设置,以统一应用的风格(可能有多套主题).在主题色设置上有几个方面,如下: 1.TabBar部分,设置图片高亮.文本高度颜色 2.NavigationBar部分,设置导航栏颜色及字体颜色 3.应用标签等,设置字体的颜色 4.应用图片主题色 主题色的设置点,大体从上面四个方面着手,图片的主题色我们可通过图片更换的方式进行处理.而通过代码来处理的`1-3`条,有着不同的处理方法.大家常规处理方法如下: 步骤一:变化分离 1.利用Swift扩展语法扩

[Swift]扩展UIColor:实现十六进制颜色字符串与UIColor之间的相互转换

对[UIColor]进行扩展 1 import UIKit 2 3 extension UIColor { 4 5 // Hex String -> UIColor 6 convenience init(hexString: String) { 7 let hexString = hexString.trimmingCharacters(in: .whitespacesAndNewlines) 8 let scanner = Scanner(string: hexString) 9 10 if