UI给图的时候给的是#f2f2f2 让我设置。没有你要的rgb。 所以只能自行解决封装了代码
HexColors.h
#import "TargetConditionals.h" #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR #import <UIKit/UIKit.h> #define HXColor UIColor #else #import <Cocoa/Cocoa.h> #define HXColor NSColor #endif @interface HXColor (HexColorAddition) + (HXColor *)hx_colorWithHexString:(NSString *)hexString; + (HXColor *)hx_colorWithHexString:(NSString *)hexString alpha:(CGFloat)alpha; + (HXColor *)hx_colorWith8BitRed:(NSInteger)red green:(NSInteger)green blue:(NSInteger)blue; + (HXColor *)hx_colorWith8BitRed:(NSInteger)red green:(NSInteger)green blue:(NSInteger)blue alpha:(CGFloat)alpha; @end
HexColors.m
#import "HexColors.h" @implementation HXColor (HexColorAddition) + (HXColor *)hx_colorWithHexString:(NSString *)hexString { // Check for hash and add the missing hash if(‘#‘ != [hexString characterAtIndex:0]) { hexString = [NSString stringWithFormat:@"#%@", hexString]; } CGFloat alpha = 1.0; if (5 == hexString.length || 9 == hexString.length) { NSString * alphaHex = [hexString substringWithRange:NSMakeRange(1, 9 == hexString.length ? 2 : 1)]; if (1 == alphaHex.length) alphaHex = [NSString stringWithFormat:@"%@%@", alphaHex, alphaHex]; hexString = [NSString stringWithFormat:@"#%@", [hexString substringFromIndex:9 == hexString.length ? 3 : 2]]; unsigned alpha_u = [[self class] hx_hexValueToUnsigned:alphaHex]; alpha = ((CGFloat) alpha_u) / 255.0; } return [[self class] hx_colorWithHexString:hexString alpha:alpha]; } + (HXColor *)hx_colorWithHexString:(NSString *)hexString alpha:(CGFloat)alpha { if (hexString.length == 0) { return nil; } // Check for hash and add the missing hash if(‘#‘ != [hexString characterAtIndex:0]) { hexString = [NSString stringWithFormat:@"#%@", hexString]; } // check for string length if (7 != hexString.length && 4 != hexString.length) { NSString *defaultHex = [NSString stringWithFormat:@"0xff"]; unsigned defaultInt = [[self class] hx_hexValueToUnsigned:defaultHex]; HXColor *color = [HXColor hx_colorWith8BitRed:defaultInt green:defaultInt blue:defaultInt alpha:1.0]; return color; } // check for 3 character HexStrings hexString = [[self class] hx_hexStringTransformFromThreeCharacters:hexString]; NSString *redHex = [NSString stringWithFormat:@"0x%@", [hexString substringWithRange:NSMakeRange(1, 2)]]; unsigned redInt = [[self class] hx_hexValueToUnsigned:redHex]; NSString *greenHex = [NSString stringWithFormat:@"0x%@", [hexString substringWithRange:NSMakeRange(3, 2)]]; unsigned greenInt = [[self class] hx_hexValueToUnsigned:greenHex]; NSString *blueHex = [NSString stringWithFormat:@"0x%@", [hexString substringWithRange:NSMakeRange(5, 2)]]; unsigned blueInt = [[self class] hx_hexValueToUnsigned:blueHex]; HXColor *color = [HXColor hx_colorWith8BitRed:redInt green:greenInt blue:blueInt alpha:alpha]; return color; } + (HXColor *)hx_colorWith8BitRed:(NSInteger)red green:(NSInteger)green blue:(NSInteger)blue { return [[self class] hx_colorWith8BitRed:red green:green blue:blue alpha:1.0]; } + (HXColor *)hx_colorWith8BitRed:(NSInteger)red green:(NSInteger)green blue:(NSInteger)blue alpha:(CGFloat)alpha { HXColor *color = nil; #if (TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE) color = [HXColor colorWithRed:(float)red/255 green:(float)green/255 blue:(float)blue/255 alpha:alpha]; #else color = [HXColor colorWithCalibratedRed:(float)red/255 green:(float)green/255 blue:(float)blue/255 alpha:alpha]; #endif return color; } + (NSString *)hx_hexStringTransformFromThreeCharacters:(NSString *)hexString { if(hexString.length == 4) { hexString = [NSString stringWithFormat:@"#%1$c%1$c%2$c%2$c%3$c%3$c", [hexString characterAtIndex:1], [hexString characterAtIndex:2], [hexString characterAtIndex:3]]; } return hexString; } + (unsigned)hx_hexValueToUnsigned:(NSString *)hexValue { unsigned value = 0; NSScanner *hexValueScanner = [NSScanner scannerWithString:hexValue]; [hexValueScanner scanHexInt:&value]; return value; } @end
调用
self.backgroundColor = [HXColor hx_colorWithHexString:@"ff5a60"];
时间: 2024-10-12 05:59:34