ios 中有的頁面也能會內嵌webview,然後webview中用h5做了乙個導航,而ios 中狀態列的顏色很難調整的與h5中導航顏色一致。如下圖所示:
其實出現這種原因,主要是因為使用16進製制顏色,導致顏色轉換出現偏差。
我這裡就是因為h5中的顏色是#3983e5
,而是使用如下方法轉換的uicolor有誤差:
+ (uicolor *) colorwithhexstring: (nsstring *)color
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;
//rnsstring *rstring = [cstring substringwithrange:range];
//grange.location = 2;
nsstring *gstring = [cstring substringwithrange:range];
//brange.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];
}
你可以檢查一下,你的專案中的h5裡是不是也是用的16進製制顏色。
然後原生自定義了乙個把16進製制顏色轉換成uicolor 的方法。
想要使網頁的導航欄顏色與狀態列顏色完全一致,那麼只需要換一種方式。
使用rgba顏色表示法即可。rgba分別 是紅色、綠色、藍色、透明度。
比如,我這裡h5中導航欄顏色改為(1,159,239,1),然後工程裡只需要將self.view的背景色用[uicolor colorwithred:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]
,表示出來即可。
關於這個api,一般都會定義乙個簡寫的巨集。
#define rgb(r, g, b, a) [uicolor colorwithred:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]
我這裡這樣設定self.view的背景色:
self.view
.backgroundcolor = rgb(1,159,239,1);
網頁導航欄和狀態列的顏色就完全一致啦。
ios中修改狀態列顏色的方法
這樣就可以讓狀態列中顯示為亮色。即可單獨為本控制器修改狀態列。或者還有一種方式,ios很貼心的在uiviewcontroller也增加了幾個介面,目的是讓狀態列根據當前顯示的uiviewcontroller來定製statusbar的前景部分。uistatusbarstyle preferredsta...
ios9中設定狀態列顏色與隱藏
1.ios中設定狀態列的樣式由 最頂層的uiwindow所在的控制器控制處理。2.ios9之前可以不用設定window的根控制器,ios9必須設定根控制器。3.ios9後設定 狀態列的樣式 隱藏 時,在最頂層的uiwindow所在的控制器中通過下面兩個方法處理 uistatusbarstyle pr...
xcode7下IOS狀態列的顏色
之前設定狀態列顏色的時候,只是 這樣就好了,可是在xcode7下,就是沒有反應,該怎麼辦呢,網上找辦法唄,最後找了乙個,方法如下 在plist裡增加一行 uistatusbarstyle 或者是 status bar style 也可以 這裡可以設定兩個值,就是下面兩個 uistatusbarsty...