IOS: extended uicolor, support hex color settings

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>

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.