1. 程式人生 > >更改狀態列,導航欄顏色的方法

更改狀態列,導航欄顏色的方法

ios上狀態列 就是指的最上面的20畫素高的部分
狀態列分前後兩部分,要分清這兩個概念,後面會用到:

前景部分:就是指的顯示電池、時間等部分;
背景部分:就是顯示黑色或者圖片的背景部分;

(一)設定statusBar的【前景部分】

簡單來說,就是設定顯示電池電量、時間、網路部分標示的顏色, 這裡只能設定兩種顏色:

預設的黑色(UIStatusBarStyleDefault)
白色(UIStatusBarStyleLightContent)
可以設定的地方有兩個:plist設定裡面 和 程式程式碼裡
初始化設定:導航欄設定為不透明並給了"標題"與狀態列文字作對比

                  self.edgesForExtendedLayout = 0;
                   self.navigationItem.title = @"標題";

http://upload-images.jianshu.io/upload_images/2507235-25004f1bab3c2357.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

改變狀態列的方法
方法一:
1、plist
View controller-based status bar appearance 設定為 NO


http://upload-images.jianshu.io/upload_images/2507235-6c3a69120beabf8a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

2、程式碼設定

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

效果如下:



http://upload-images.jianshu.io/upload_images/2507235-3153e36ef293b252.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

方法二:
1、plist
View controller-based status bar appearance 設定為 YES 或者預設(不設定)
注意:
如果View controller-based status bar appearance為YES。
則[UIApplication sharedApplication].statusBarStyle 無效。
2、程式碼設定
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

http://upload-images.jianshu.io/upload_images/2507235-6e88bfe257208d7c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
或者在控制器中重寫 preferredStatusBarStyle方法,修改狀態列顏色
- (UIStatusBarStyle)preferredStatusBarStyle {
//    return UIStatusBarStyleLightContent;
    return UIStatusBarStyleDefault;
}
(二)設定statusBar的【背景部分】
背景部分,簡單來說,就是背景色;改變方法有兩種:

1、系統提供的方法

navigationBar的setBarTintColor介面,用此介面可改變statusBar的背景色
self.navigationController.navigationBar.barTintColor = [UIColor greenColor];

http://upload-images.jianshu.io/upload_images/2507235-b10b5c7628fa4409.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
如果想將狀態列和導航欄字型全變為白色,這樣就行
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

http://upload-images.jianshu.io/upload_images/2507235-3b5c7a87ecb17178.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
如果只想改變導航欄的字型顏色,可以這樣
[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]}];

http://upload-images.jianshu.io/upload_images/2507235-b6219950ec9b9de8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
或者可以設定背景圖片
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"image01"] forBarMetrics:UIBarMetricsDefault];

http://upload-images.jianshu.io/upload_images/2507235-5bc524a0e22cd323.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

2、另闢蹊徑

建立一個UIView,
設定該UIView的frame.size 和statusBar大小一樣,
設定該UIView的frame.origin 為{0,-20},
設定該UIView的背景色為你希望的statusBar的顏色,
在navigationBar上addSubView該UIView即可。
原理:
狀態列區域相對於navigationBar的區域為

{0,-20,self.view.bounds.size.width,20}

除了改變狀態列的前景色(文字顏色,wifi顏色,時間顏色,電池顏色),就是改變背景色.由於狀態列區域上的控制元件是隱藏的,所以只要在狀態列區域被渲染了顏色,狀態列的背景顏色就跟著一起改變,從而改變了狀態列的背景顏色.

UIView *statusBarView = [[UIView alloc]   initWithFrame:CGRectMake(0, -20,    self.view.bounds.size.width, 20)];
statusBarView.backgroundColor = [UIColor greenColor];
[self.navigationController.navigationBar addSubview:statusBarView];


http://upload-images.jianshu.io/upload_images/2507235-990df64a39ca4c3d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

另外圖片透明處理
navigationBar為透明,註釋掉self.edgesForExtendedLayout = 0;

// self.edgesForExtendedLayout = 0;
 [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]
 self.navigationController.navigationBar.shadowImage = [UIImage new];

http://upload-images.jianshu.io/upload_images/2507235-38149f4ff5459506.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

相關推薦

更改狀態導航顏色方法

ios上狀態列 就是指的最上面的20畫素高的部分 狀態列分前後兩部分,要分清這兩個概念,後面會用到: 前景部分:就是指的顯示電池、時間等部分; 背景部分:就是顯示黑色或者圖片的背景部分; (一)設定s

iOS 更改狀態導航顏色的幾種方法

ios上狀態列 就是指的最上面的20畫素高的部分 狀態列分前後兩部分,要分清這兩個概念,後面會用到: 前景部分:就是指的顯示電池、時間等部分; 背景部分:就是顯示黑色或者圖片的背景部分; (一)設定statusBar的【前景部分】 簡單來說,就是設定顯示電池電量、時間、網路部分標示的顏色, 這裡只能設定兩種

Android 通過 style 設定狀態導航等的顏色

我們在有些時候會有這個樣的需求,需要修改狀態列,導航欄。系統控制元件的顏色。我們可以先定義一個style,然後在這個style中設定我們需要顏色的屬性,最後在清單檔案中來給某個Activity設定主題即可。程式碼如下: <style name="

修改狀態導航顏色

1.修改狀態列 可進行自定義 public class StatusBarView extends View { private Context context; public StatusBarView(Context context) { this(con

安卓4.3原始碼內隱藏狀態導航

博主使用的是天嵌的IMX6Q 安卓版本4.3 修改方法: 導航欄:     修改 build/tools/buildinfo.sh 58行         echo "qemu.hw.mainkey

設定狀態導航背景顏色修改導航返回按鈕顏色

1、設定狀態列為透明黑色: 在AppDelegate.h的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOption

獲取導航狀態標籤的高度

獲取導航欄的高度: self.navigationController.navigationBar.frame.size.height 寬度: self.navigationController.navigationBar.frame.size.width

沉浸式狀態實現狀態導航變色吧

該功能只能適應Android4.4及以上版本,4.4版本真機,5.0版本真機,6.0版本模擬器測試通過 該方法來自https://github.com/jgilfelt/SystemBarTint開源庫 效果圖: 實現步驟: (一)Android Studio專案新增依賴

(七十)Xcode5及以上對於狀態導航樣式的設定方法

【狀態列】 在Xcode5以前,狀態列是通過UIApplication單例來管理的,而在此後,預設情況下狀態列通過控制器來管理,而且如果控制器有NavigationController,那麼設定狀態列的操作在NavigationController中進行,呼叫的方法為: -

Android狀態導航

1.隱藏狀態列或導航欄 View decordView = getWindow().getDecorView(); /*SYSTEM_UI_FLAG_HIDE_NAVIGATION和SYSTEM_UI_FLAG_FULLSCREEN 分別代表隱藏導航欄和狀態列

android4.4以上沉浸式狀態導航實現以及Bar的其他管理

自從android4.4開始,android手機狀態列再也不是一成黑的時代,之前叫做變色龍,miui6釋出會把他叫做沉浸式,之後大家就自然而然的接受了沉浸式這個名稱,其實實際應該叫做Translucent Bar,即為透明狀態列。   沉浸式實現原理其實是使整個activity佈局延伸到整個螢幕,然

獲取狀態導航高度

獲取狀態列高度 public static int getStatusHeight(Context context) { int status_bar_height = 0; int h = context.getResources().getDimensionPixel

android介面UI美化:沉浸模式、全透明或半透明狀態導航的實現

android api19開始我們就能對頂部狀態列和底部導航欄進行半透明處理了,而api21開始則可以實現全透明狀態列與導航欄以及開啟沉浸模式,至於什麼是沉浸模式,大家百度一下應該就都知道了,有一點需要強調的是全透明不是沉浸模式,前者只是將狀態列、導航欄的背景設定為完全透明,而後者則是完全將狀態列與

【實戰乾貨】透明狀態導航的終極解決方案

本文主要分享了透明狀態列和導航欄的終極解決方案。以後這類問題,一文搞定 這個技術痛點遇到過的都懂~本文幫你徹底解決這個痛點~還不快收藏   背景   在我做 Android 開發之前,我就發現有些 App 的狀態列和導航欄有透明效果,或者是沉浸式效果,比如說酷

狀態導航的設定

其中有些值是要相互配合使用,單一使用沒有效果,需要的時候查詢文件,都有解釋, 或是多嘗試幾次,也就知道該用哪個了。 // 沉浸式狀態列 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

Android開發之應用狀態導航都透明

  直接上程式碼 //狀態列、導航欄都透明 private void hideStatusBarNavigationBar() { if (Build.VERSION.SDK_INT = Build.VERSION_CODES.LOLLIPOP)

Android沉浸式狀態導航實現

Android在4.4版本以後開始出現狀態列及導航欄透明化 實現程式碼如下 If (Build.Version.Sdk_Int >= Build.Version_Codes.Kitkat)

Android 沉浸式模式與常見狀態導航效果

官方稱沉浸式狀態列為沉浸式模式。什麼是沉浸式?沉浸式就是讓人專注當前的(由設計者營造)情境下感到愉悅和滿足,而忘記真實的情境。什麼是Android中的沉浸式?當啟用該模式,應用程式的介面將佔據整個螢幕,自動隱藏系統的狀態列和導航欄,讓應用程式內容可以在最大顯示範圍呈現,增加大屏體驗,而當需要檢視通知的時候只需

Android隱藏狀態導航

public class BaseActivity extends AppCompatActivity { @Override public void onWindowFocusChanged(boolean hasFocus) { super

iOS開發——iOS狀態導航的控制問題

導航欄控制 背景控制 在IOS7中使用barTintColor來控制導航欄的背景色: [[UINavigationBar appearance] setBarTintColor:[UIColor yellowColor]]; 這個設定方法可以在AppDelegate中設定,全域性可以生效。