iOS下使狀態列顏色與H5中背景色一致

2021-07-23 13:13:49 字數 1992 閱讀 3262

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...