iOS下使?fàn)顟B(tài)欄顏色與H5中背景色一致

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)欄的顏色就完全一致啦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容