iOS开发技巧(系列十八:扩展UIColor,支持十六进制颜色设置)
生活随笔
收集整理的這篇文章主要介紹了
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?colorWithRed:((R)?/?255.0f)?green:((G)?/?255.0f)?blue:((B)?/?255.0f)?alpha:1.0f] @interface?UIColor?(Hex) +?(UIColor?*)colorWithHexString:(NSString?*)color; //從十六進制字符串獲取顏色, //color:支持@“#123456”、?@“0X123456”、?@“123456”三種格式 +?(UIColor?*)colorWithHexString:(NSString?*)color?alpha:(CGFloat)alpha; @end 上面的代碼在開頭是兩個宏定義,就是對[UIColor colorWithRed:green:blue:alpha]方法的簡化,在UIColor(Hex)中聲明兩個方法 -colorWithHexString和-colorWithHexString:alpha,這個很好理解。
UIColor+Hex.m文件
#import?"UIColor+Hex.h" @implementation?UIColor?(Hex) +?(UIColor?*)colorWithHexString:(NSString?*)color?alpha:(CGFloat)alpha { ????//刪除字符串中的空格 ????NSString?*cString?=?[[color?stringByTrimmingCharactersInSet:[NSCharacterSet?whitespaceAndNewlineCharacterSet]]?uppercaseString]; ????//?String?should?be?6?or?8?characters ????if?([cString?length]?<?6) ????{ ????????return?[UIColor?clearColor]; ????} ????//?strip?0X?if?it?appears ????//如果是0x開頭的,那么截取字符串,字符串從索引為2的位置開始,一直到末尾 ????if?([cString?hasPrefix:@"0X"]) ????{ ????????cString?=?[cString?substringFromIndex:2]; ????} ????//如果是#開頭的,那么截取字符串,字符串從索引為1的位置開始,一直到末尾 ????if?([cString?hasPrefix:@"#"]) ????{ ????????cString?=?[cString?substringFromIndex:1]; ????} ????if?([cString?length]?!=?6) ????{ ????????return?[UIColor?clearColor]; ????} ???? ????//?Separate?into?r,?g,?b?substrings ????NSRange?range; ????range.location?=?0; ????range.length?=?2; ????//r ????NSString?*rString?=?[cString?substringWithRange:range]; ????//g ????range.location?=?2; ????NSString?*gString?=?[cString?substringWithRange:range]; ????//b ????range.location?=?4; ????NSString?*bString?=?[cString?substringWithRange:range]; ???? ????//?Scan?values ????unsigned?int?r,?g,?b; ????[[NSScanner?scannerWithString:rString]?scanHexInt:&r]; ????[[NSScanner?scannerWithString:gString]?scanHexInt:&g]; ????[[NSScanner?scannerWithString:bString]?scanHexInt:&b]; ????return?[UIColor?colorWithRed:((float)r?/?255.0f)?green:((float)g?/?255.0f)?blue:((float)b?/?255.0f)?alpha:alpha]; } //默認alpha值為1 +?(UIColor?*)colorWithHexString:(NSString?*)color { ????return?[self?colorWithHexString:color?alpha:1.0f]; } @end 這樣就擴展了UIColor,支持十六進制顏色設置。下面舉個栗子,設置UIButton一些顏色特征,來說明該擴展的使用,
#import?"UIColor+Hex.h" //省略多余的代碼 //設置導航欄右側的BarButtonItem為Button -?(void)setupNavigationItem {??? ????UIView?*rightView?=?[[UIView?alloc]?init]; ????rightView.bounds?=?CGRectMake(0,?0,?52,?44); ???? ????UIButton?*rightButton?=?[UIButton?buttonWithType:UIButtonTypeCustom]; ????rightButton.frame?=?CGRectMake(-6,?0,?52,?44); ????rightButton.backgroundImageEdgeInsets?=?UIEdgeInsetsMake(7,?0,?7,?0); ????//kSetting是國際化的字符串"設置" ????[rightButton?setTitle:NVSLocalizedString(@"kSetting",?nil)?forState:UIControlStateNormal]; ????//使用宏定義的RGB_COLOR //????[rightButton?setTitleColor:RGB_COLOR(160,?170,?150)?forState:UIControlStateHighlighted]; ????//使用UIColor+Hex擴展 ????[rightButton?setTitleColor:[UIColor?colorWithHexString:@"#708c3b"]?forState:UIControlStateNormal]; ????rightButton.titleLabel.font?=?[UIFont?fontWithName:@"Heiti?SC"?size:12.f]; ????[rightButton?setBackgroundImage:[UIImage?imageNamed:@"device_setting_bg"] ???????????????????????????forState:UIControlStateNormal]; ????[rightButton?setBackgroundImage:[UIImage?imageNamed:@"device_setting_bg_press"] ???????????????????????????forState:UIControlStateHighlighted]; ????[rightButton?addTarget:self?action:@selector(settingBtnPresss:) ??????????forControlEvents:UIControlEventTouchUpInside]; ????[rightView?addSubview:rightButton]; ???? ????UIBarButtonItem?*rightBarButtonItem?=?[[UIBarButtonItem?alloc]?initWithCustomView:rightView]; ????[self.navigationItem?setRightBarButtonItem:rightBarButtonItem?animated:YES]; ? ????[rightBarButtonItem?release]; ????[rightView?release]; } 恩,使用差不多就這么簡單,總結一下,本篇博客主要有以下幾個細節或者說知識點,
(1)宏定義RGB_COLOR和RGBA_COLOR可以設置顏色
(2)UIColor+Hex擴展可以設置顏色
(3)導航欄上面的BarButtonItem怎么設置為Button
(4)Button一些常用和不常用的屬性設置
轉載于:https://www.cnblogs.com/Free-Thinker/p/5868529.html
總結
以上是生活随笔為你收集整理的iOS开发技巧(系列十八:扩展UIColor,支持十六进制颜色设置)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 想大哭一场,求推荐催泪电影
- 下一篇: 顺序表应用6:有序顺序表查询