美洽引用的第三方扩展UIColor+Hex会替换掉TSMessage的导致其背景全部变黑
firebear opened this issue · comments
这个扩展的这段代码不接受#字符作为颜色字符串的首字符,使得TSMessage加载缺省配置文件TSMessageDefaulDesign.json中的颜色值为0x000000,从而使其背景全部变黑。
+ (UIColor *)colorWithHexString:(NSString *)hexString {
NSScanner *scanner = [NSScanner scannerWithString:hexString];
unsigned result = 0;
[scanner scanHexInt:&result];
return [self.class colorWithHex:result];
}
TSMessage引用的三方的实现是这样的:
+ (HXColor *)colorWithHexString:(NSString *)hexString alpha:(CGFloat)alpha
{
// Check for hash and add the missing hash
if('#' != [hexString characterAtIndex:0])
{
hexString = [NSString stringWithFormat:@"#%@", hexString];
}
// check for string length
assert(7 == hexString.length || 4 == hexString.length);
// check for 3 character HexStrings
hexString = [[self class] hexStringTransformFromThreeCharacters:hexString];
NSString *redHex = [NSString stringWithFormat:@"0x%@", [hexString substringWithRange:NSMakeRange(1, 2)]];
unsigned redInt = [[self class] hexValueToUnsigned:redHex];
NSString *greenHex = [NSString stringWithFormat:@"0x%@", [hexString substringWithRange:NSMakeRange(3, 2)]];
unsigned greenInt = [[self class] hexValueToUnsigned:greenHex];
NSString *blueHex = [NSString stringWithFormat:@"0x%@", [hexString substringWithRange:NSMakeRange(5, 2)]];
unsigned blueInt = [[self class] hexValueToUnsigned:blueHex];
HXColor *color = [HXColor colorWith8BitRed:redInt green:greenInt blue:blueInt alpha:alpha];
return color;
}
请看看吧。