天天看點

UI_iOS應用狀态欄樣式設定_及導航欄(NavigationBar)透明

UI_iOS應用狀态欄樣式設定_及導航欄(NavigationBar)透明

今天記錄兩點,如圖檔中的兩條紅線:

1..在特定的頁面需要将狀态欄變為白色.

2..為了頁面美觀度,特定的頁面 需要将NavigationVC設定為透明,但是設定将一個透明圖設定為Nav的背景圖以後會有一條陰影的線!如下面這個圖

UI_iOS應用狀态欄樣式設定_及導航欄(NavigationBar)透明

狀态欄樣式設定:

1.設定應用啟動不顯示狀态欄,這一欄相當于是Info的可視化設定,勾選這一欄info.plist會自動添加Status bar is initially hidden應用啟動顯示啟動頁時隐藏狀态欄

UI_iOS應用狀态欄樣式設定_及導航欄(NavigationBar)透明

2..将 狀态欄設定為白.狀态的顔色隻有兩種顔色Default(黑色),或者light(白色)

首先在Info.pilst 設定基于視圖控制器的狀态欄外觀  添加View controller-based status bar appearance為NO我們就能控制狀态的外觀權限.

然後在代碼中添加以下代碼,就可以将狀态欄設定為白色,不過通過[UIApplication sharedApplication]設定的是應用全局性的,是以要在目前Vc以外将狀态欄的樣式還原為Default

<span style="font-size:18px;">    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:YES];
    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;</span>
           

在viewWilldisappser中設定:

<span style="font-size:18px;">    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;</span>
           

這樣,設定在你想要的Vc中狀态欄就是白色的,其他Vc就是預設的黑色

導航欄(NavigationVc)透明透明化設定(這個效果也是自iOS7開始才可以設定的):

設定導航欄的透明,首先想到一點就是将導航欄的北京圖檔設定為透明圖檔,這樣想法是正确的但是設定完以後,發現怎麼調都會有一條陰影先存在.像上面第二張圖一樣那怎麼做到想第一張圖一樣的效果,代碼不多:

self.navigationController.navigationBar.translucent = YES;//首先要将目前的navigationBar的半透明設定為Yes;為NO的導航欄不透明
    self.navigationController.navigationBar.barStyle    = UIBarStyleBlackTranslucent; //在iOS6及之前,translucent的預設值為NO。<span style="font-family:'Heiti SC Light';color:#000000;">
之後,如果barStyle設為</span>UIBarStyleBlackTranslucent<span style="font-family:'Heiti SC Light';">則其值為</span>YES<span style="font-family:'Heiti SC Light';">。</span>是以這兩句保留其中一句就可以了!
    
     //這裡設定navigationBar的背景圖檔為一張 1像素 的透明背景圖檔
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigation_bar"] forBarMetrics:UIBarMetricsDefault];
    //這裡是主要點shadowImage,陰影圖檔! 我們看到的那條不管怎設定都還在的線就是這個陰影圖像,如不自定義,預設為顯示
     if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)])
    {
         //_shadowImage是一個目前Vc的全局Image成員變量,用來存儲變之前的shadowImage,因為要在出目前Vc後其他還原預設的陰影圖檔
        _shadowImage                                    = self.navigationController.navigationBar.shadowImage;
        [self.navigationController.navigationBar setShadowImage:[[UIImage alloc]init]];
    }
           

同樣在viewWilldidappser中設定會原預設狀态:

[self.navigationController.navigationBar setShadowImage:_shadowImage];
           

繼續閱讀