iOS 中有的頁(yè)面也能會(huì)內(nèi)嵌WebView,然后WebView中用H5做了一個(gè)導(dǎo)航,而iOS 中狀態(tài)欄的顏色很難調(diào)整的與H5中導(dǎo)航顏色一致。如下圖所示:?
其實(shí)出現(xiàn)這種原因,主要是因?yàn)槭褂?6進(jìn)制顏色,導(dǎo)致顏色轉(zhuǎn)換出現(xiàn)偏差。
我這里就是因?yàn)镠5中的顏色是?#3983E5,而是使用如下方法轉(zhuǎn)換的UIColor有誤差:
+ (UIColor *) colorWithHexString: (NSString *)color
{
? ? 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? ? if ([cString hasPrefix:@"0X"])
? ? ? ? cString = [cString substringFromIndex:2];
? ? 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:1.0f];
}
你可以檢查一下,你的項(xiàng)目中的H5里是不是也是用的16進(jìn)制顏色。?
然后原生自定義了一個(gè)把16進(jìn)制顏色轉(zhuǎn)換成UIColor 的方法。
想要使網(wǎng)頁(yè)的導(dǎo)航欄顏色與狀態(tài)欄顏色完全一致,那么只需要換一種方式。
使用RGBA顏色表示法即可。RGBA分別 是紅色、綠色、藍(lán)色、透明度。
比如,我這里H5中導(dǎo)航欄顏色改為(1,159,239,1),然后工程里只需要將self.view的背景色用[UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a],表示出來(lái)即可。
關(guān)于這個(gè)API,一般都會(huì)定義一個(gè)簡(jiǎn)寫的宏。
#define RGB(r, g, b, a) ?[UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 blue:b/255.0 alpha:a]
我這里這樣設(shè)置self.view的背景色:
self.view.backgroundColor = RGB(1,159,239,1);
網(wǎng)頁(yè)導(dǎo)航欄和狀態(tài)欄的顏色就完全一致啦。