IOS: extended uicolor, support hex color settings
Last Update:2016-01-13
Source: Internet
Author: User
<span id="Label3"></p><p><p><span class="corner" style="font-family: ‘courier new‘, courier; font-size: 16px;"><span class="corner">From Reprint: http://my.oschina.net/leejan97/blog/307491</span></span></p></p><p><p><span class="corner" style="font-family: ‘courier new‘, courier; font-size: 16px;"><span class="corner">Summary: you can set the color of the control directly using hexadecimal without having to convert by dividing by 255.0</span></span></p></p><span style="font-family: ‘courier new‘, courier; font-size: 16px;"><span style="font-family: ‘courier new‘, courier; font-size: 16px;">#define Uicolor Category Uibarbuttonitem</span></span><span style="font-family: ‘courier new‘, courier; font-size: 16px;"><span style="font-family: ‘courier new‘, courier; font-size: 16px;">Create a new category named uicolor+hex, which indicates that the Uicolor supports hex hex color settings. </span></span><span style="font-family: ‘courier new‘, courier; font-size: 16px;"><span style="font-family: ‘courier new‘, courier; font-size: 16px;">uicolor+hex.h File</span></span><pre><pre> <span style="color: #0000ff;"> #import </span> <UIKit/UIKit.h> <span style="color: #0000ff;"> #define </span> rgba_color (r, G, B, A) [uicolor colorwithred: ((r)/255.0f) green: ((G)/255.0f) blue: ((B)/255.0f) Alpha:a]<span style="color: #0000ff;"> #define </span> Rgb_color (r, G, B) [uicolor colorwithred: ((r)/255.0f) green: ((G)/255.0f) blue: ((B)/255.0f) alpha:1.0 f] <span style="color: #0000ff;"> @interface </span> <span style="color: #000000;"> Uicolor (Hex) </span> + (uicolor *) Colorwithhexstring: (nsstring *<span style="color: #000000;" ) color; < span> <span style="color: #008000;">//</span> <span style="color: #008000;" "gets the color from the hexadecimal string, < span> <span style="color: #008000;">//</span> <span style="color: #008000;">color: supports @ "#123456", @ "0x123456", @ "123456" three formats </span> + (uicolor *) colorwithhexstring :(nsstring *<span style="color: #000000;">) color alpha: (cgfloat) alpha; </span> <span style="color: #0000ff;"> @end </span> </span></span></pre></pre><p><p><span style="font-family: ‘courier new‘, courier; font-size: 16px;">The above code begins with two macro definitions, which is the simplification of the [uicolor colorWithRed:green:blue:alpha] method, in Uicolor (Hex) Two methods are declared In-colorwithhexstring and-colorwithhexstring:alpha, which is well understood.</span></p></p><p><p><span style="font-family: ‘courier new‘, courier; font-size: 16px;">UICOLOR+HEX.M file</span></p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;">#import</span></span> <span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">uicolor+hex.h</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">@implementation</span></span><span style="color: #000000;"><span style="color: #000000;">Uicolor (Hex)</span></span>+ (uicolor *) colorwithhexstring: (nsstring *<span style="color: #000000;"><span style="color: #000000;">) color Alpha: (cgfloat) alpha{</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Delete spaces in a string</span></span>NSString *cstring =<span style="color: #000000;"><span style="color: #000000;">[[color stringbytrimmingcharactersinset:[nscharacterset whitespaceandnewlinecharacterset]] uppercaseString]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">String should be 6 or 8 characters</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>([cString length] <<span style="color: #800080;"><span style="color: #800080;">6</span></span><span style="color: #000000;"><span style="color: #000000;">) { </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">[uicolor clearcolor]; } </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">strip 0X If it appears</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">if it starts with 0x, then the string is truncated, and the string starts at the position indexed to 2, up to the end</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>([cString hasprefix:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">0X</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]) {cString</span></span>= [cString Substringfromindex:<span style="color: #800080;"><span style="color: #800080;">2</span></span><span style="color: #000000;"><span style="color: #000000;">]; } </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;">If it starts with #, then the string is truncated, and the <span style="color: #008000;">string starts at the position indexed to 1, up to the end</span></span> <span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>([cString hasprefix:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">#</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">]) {cString</span></span>= [cString Substringfromindex:<span style="color: #800080;"><span style="color: #800080;">1</span></span><span style="color: #000000;"><span style="color: #000000;">]; } </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">if</span></span>([cString length]! =<span style="color: #800080;"><span style="color: #800080;">6</span></span><span style="color: #000000;"><span style="color: #000000;">) { </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span><span style="color: #000000;"><span style="color: #000000;">[uicolor clearcolor]; } </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">separate into r, g, b substrings</span></span><span style="color: #000000;"><span style="color: #000000;">Nsrange range; Range.location</span></span>=<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">; Range.length</span></span>=<span style="color: #800080;"><span style="color: #800080;">2</span></span><span style="color: #000000;"><span style="color: #000000;">; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">R</span></span>NSString *rstring =<span style="color: #000000;"><span style="color: #000000;">[cString substringwithrange:range]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">g</span></span>Range.location =<span style="color: #800080;"><span style="color: #800080;">2</span></span><span style="color: #000000;"><span style="color: #000000;">; NSString</span></span>*gstring =<span style="color: #000000;"><span style="color: #000000;">[cString substringwithrange:range]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">b</span></span>Range.location =<span style="color: #800080;"><span style="color: #800080;">4</span></span><span style="color: #000000;"><span style="color: #000000;">; NSString</span></span>*bstring =<span style="color: #000000;"><span style="color: #000000;">[cString substringwithrange:range]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Scan Values</span></span>Unsigned<span style="color: #0000ff;"><span style="color: #0000ff;">int</span></span><span style="color: #000000;"><span style="color: #000000;">r, g, b; [[nsscanner scannerwithstring:rstring] scanhexint:</span></span>&<span style="color: #000000;"><span style="color: #000000;">r]; [[nsscanner scannerwithstring:gstring] scanhexint:</span></span>&<span style="color: #000000;"><span style="color: #000000;">g]; [[nsscanner scannerwithstring:bstring] scanhexint:</span></span>&<span style="color: #000000;"><span style="color: #000000;">b]; </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span>[uicolor colorwithred: ((<span style="color: #0000ff;"><span style="color: #0000ff;">float</span></span>) r/<span style="color: #800080;"><span style="color: #800080;">255.0f</span></span>) Green: ((<span style="color: #0000ff;"><span style="color: #0000ff;">float</span></span>) g/<span style="color: #800080;"><span style="color: #800080;">255.0f</span></span>) Blue: ((<span style="color: #0000ff;"><span style="color: #0000ff;">float</span></span>) b/<span style="color: #800080;"><span style="color: #800080;">255.0f</span></span><span style="color: #000000;"><span style="color: #000000;">) alpha:alpha];} </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">The default alpha value is 1</span></span>+ (uicolor *) colorwithhexstring: (nsstring *<span style="color: #000000;"><span style="color: #000000;">) color{</span></span><span style="color: #0000ff;"><span style="color: #0000ff;">return</span></span>[self Colorwithhexstring:color Alpha:<span style="color: #800080;"><span style="color: #800080;">1.0f</span></span><span style="color: #000000;"><span style="color: #000000;">];} </span></span><span style="color: #0000ff;"><span style="color: #0000ff;">@end</span></span></pre><p><p><span style="font-family: ‘courier new‘, courier; font-size: 16px;">This expands the uicolor and supports hexadecimal color settings. Here is a chestnut, set UIButton some color features to illustrate the use of the extension,</span></p></p><pre><span style="color: #0000ff;"><span style="color: #0000ff;">#import</span></span> <span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #800000;"><span style="color: #800000;">uicolor+hex.h</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Omit extra Code</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">Set the Barbuttonitem button to the right of the navigation bar</span></span>- (<span style="color: #0000ff;"><span style="color: #0000ff;">void</span></span><span style="color: #000000;"><span style="color: #000000;">) Setupnavigationitem{UIView</span></span>*rightview =<span style="color: #000000;"><span style="color: #000000;">[[UIView alloc] init]; Rightview.bounds</span></span>= CGRectMake (<span style="color: #800080;"><span style="color: #800080;">0</span></span>,<span style="color: #800080;"><span style="color: #800080;">0</span></span>,<span style="color: #800080;"><span style="color: #800080;"></span> the</span>,<span style="color: #800080;"><span style="color: #800080;"></span> -</span><span style="color: #000000;"><span style="color: #000000;">); UIButton</span></span>*rightbutton =<span style="color: #000000;"><span style="color: #000000;">[UIButton buttonwithtype:uibuttontypecustom]; Rightbutton.frame</span></span>= CGRectMake (-<span style="color: #800080;"><span style="color: #800080;">6</span></span>,<span style="color: #800080;"><span style="color: #800080;">0</span></span>,<span style="color: #800080;"><span style="color: #800080;"></span> the</span>,<span style="color: #800080;"><span style="color: #800080;"></span> -</span><span style="color: #000000;"><span style="color: #000000;">); Rightbutton.backgroundimageedgeinsets</span></span>= Uiedgeinsetsmake (<span style="color: #800080;"><span style="color: #800080;">7</span></span>,<span style="color: #800080;"><span style="color: #800080;">0</span></span>,<span style="color: #800080;"><span style="color: #800080;">7</span></span>,<span style="color: #800080;"><span style="color: #800080;">0</span></span><span style="color: #000000;"><span style="color: #000000;">); </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">ksetting is an internationalized string "settings"</span></span>[rightbutton settitle:nvslocalizedstring (<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">ksetting</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">, Nil) forstate:uicontrolstatenormal]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">using Rgb_color defined by a macro</span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">[rightbutton Settitlecolor:rgb_color () forstate:uicontrolstatehighlighted]; </span></span><span style="color: #008000;"><span style="color: #008000;">//</span></span><span style="color: #008000;"><span style="color: #008000;">using Uicolor+hex extensions</span></span>[rightbutton Settitlecolor:[uicolor colorwithhexstring:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">#708c3b</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">] forstate:uicontrolstatenormal]; RightButton.titleLabel.font</span></span>= [uifont Fontwithname:<span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">Heiti SC</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span>Size<span style="color: #800080;"><span style="color: #800080;"></span> a</span><span style="color: #000000;"><span style="color: #000000;">. f]; [rightbutton setbackgroundimage:[uiimage imagenamed:</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">DEVICE_SETTING_BG</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">] forstate:uicontrolstatenormal]; [rightbutton setbackgroundimage:[uiimage imagenamed:</span></span><span style="color: #800000;"><span style="color: #800000;">@"</span></span><span style="color: #800000;"><span style="color: #800000;">device_setting_bg_press</span></span><span style="color: #800000;"><span style="color: #800000;">"</span></span><span style="color: #000000;"><span style="color: #000000;">] forstate:uicontrolstatehighlighted]; [rightbutton addtarget:self action: @selector (settingbtnpresss:) forcontrolevents:uicontroleventtouchupinside]; [rightview addsubview:rightbutton]; Uibarbuttonitem</span></span>*rightbarbuttonitem =<span style="color: #000000;"><span style="color: #000000;">[[uibarbuttonitem alloc] initwithcustomview:rightview]; [self.navigationitem Setrightbarbuttonitem:rightbarbuttonitem animated:yes]; [rightbarbuttonitem release]; [rightview release];}</span></span></pre><p><p><span style="font-family: ‘courier new‘, courier; font-size: 16px;">Use is almost so simple, summed up, this blog mainly has the following several details or knowledge points,</span></p></p><p><p><span style="font-family: ‘courier new‘, courier; font-size: 16px;">(1) macro Definition Rgb_color and Rgba_color can set color</span></p></p><p><p><span style="font-family: ‘courier new‘, courier; font-size: 16px;">(2) uicolor+hex extension can set color</span></p></p><p><p><span style="font-family: ‘courier new‘, courier; font-size: 16px;">(3) how the Barbuttonitem above the navigation bar is set to button</span></p></p><p><p><span style="font-family: ‘courier new‘, courier; font-size: 16px;">(4) button Some common and infrequently used property settings</span></p></p><p><p>IOS: extended uicolor, support hex color settings</p></p></span>