1057

アプリケーションの背景が暗いのですが、iOS 7 ではステータス バーが透明になりました。そのため、隅にある緑色のバッテリーインジケーターだけが見えます。ホーム画面のようにステータス バーのテキストの色を白に変更するにはどうすればよいですか?

4

59 に答える 59

858

または、ビュー コントローラー ベースのステータス バーの外観を無効にすることもできます。

  1. に設定View controller-based status bar appearanceNOますInfo.plist
  2. 電話[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

注: このメソッドは iOS9 で廃止されました。preferredStatusBarStyle代わりに UIViewController で使用してください。( Apple Developer Libraryを参照)

于 2013-08-12T10:35:06.673 に答える
451

これは、コードを 1 行も書かずに実行できます。
アプリ全体でステータス バーのテキストの色を白にするには、次の手順を実行します。

あなたのプロジェクトのplistファイルについて:

  • ステータス バーのスタイル:Transparent black style (alpha of 0.5)
  • コントローラー ベースのステータス バーの外観を表示します。NO
  • ステータスバーは最初は非表示です:NO
于 2013-09-11T04:47:02.713 に答える
247

注: 最も支持された回答は、iOS 7 / 8 では機能しません

Info.plist で、「コントローラー ベースのステータス バーの外観を表示する」を NO に設定します。

AppDelegate に追加

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
   ...
}    

このソリューションは、iOS 7 / 8 で機能します。

于 2013-09-23T05:11:30.577 に答える
120

私にとっては、他の回答(および他のソース/ドキュメントから)のすべてのものを使用しても何も起こりませんでした。役に立ったのは、XIB でナビゲーション バーのスタイルを「黒」に設定することでした。これにより、コードをまったく使用せずにテキストが白に変更されました。

ここに画像の説明を入力してください

于 2013-09-12T16:42:35.840 に答える
103

どれもうまくいかなかったので、ここに実用的な解決策があります...

Info.plist、次の行を追加します。

UIViewControllerBasedStatusBarAppearance値を設定しますNO

次に、AppDelegate でdidFinishLaunchingWithOptions、次の行を追加します。

[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
于 2013-12-29T11:28:29.170 に答える
77

このためにコードを実行する必要はありません

次のように、info.plist に「コントローラーベースのステータスバーの外観を表示する」キーを追加する必要があります。ここに画像の説明を入力

& 値のタイプをブール値に設定 & 値を NO に設定します。次に、プロジェクト設定をクリックし、[全般] タブをクリックして、[展開情報] の下で、次のようにステータス バーのスタイルを .Light に設定します。

ここに画像の説明を入力

それでおしまい。

于 2016-02-09T09:00:59.500 に答える
52

次の 2 つの手順のみ:

ステップ1:

の [情報] タブで、project target行を追加します。

UIViewControllerBasedStatusBarAppearance、設定値NO

ステップ2:

プロジェクト内AppDelegate.m:

- (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
    …
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    …
}
于 2013-12-21T13:55:54.533 に答える
48

これは、2013 年 9 月 18 日にリリースされた Golden Master iOS 7 および Xcode 5 GM シードと iOS7 SDK で動作します (少なくともナビゲーション コントローラーが非表示の場合)。

  1. に設定the UIViewControllerBasedStatusBarAppearanceNOます Info.plist

  2. メソッド内またはどこでも、ViewDidLoadステータスバーのスタイルを変更したい場所: [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

于 2013-09-13T08:28:17.890 に答える
34

UIViewController が UINavigationController 内にある場合は、BarStyle を設定する必要があります。

-[UINavigationBar setBarStyle:UIBarStyleBlack]

元の回答はこちら

https://devforums.apple.com/message/844264#844264

于 2013-09-27T08:16:46.093 に答える
32

Interface Builderで作成された埋め込みナビゲーション コントローラーがある場合は、ナビゲーション コントローラーを管理するクラスで次のように設定してください。

-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 

それだけで十分です。

于 2013-08-19T00:41:31.160 に答える
29

iOS 7 アプリのSwiftプロジェクトでXcode 6 ベータ 5を使用しています。

これが私がやったことです、そしてそれはうまくいきます:

info.plist:

ここに画像の説明を入力してください

于 2014-08-20T22:34:52.300 に答える
26
  1. Project->Targetに移動します。

  2. に設定Status Bar StyleLightます。起動画面からステータスバーを白くします。 プロジェクト設定

  3. 次に、 in に等しく設定しView controller-based status bar appearanceます。NOInfo.plist

于 2016-05-31T01:46:28.763 に答える
22

単純にアプリ内デリゲート:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

Swift 5では、以下の手順に従います。

  1. キーを追加し、Info.plist にUIViewControllerBasedStatusBarAppearance値を設定しますfalse
  2. キーUIStatusBarStyleを追加して値を設定するUIStatusBarStyleLightContent
于 2014-01-16T17:34:03.970 に答える
21

まあ、これは私にとって本当にケーキのように機能しています。

アプリの に移動しますinfo.plist

  1. View controller-based status bar appearanceに設定NO
  2. Status bar styleに設定UIStatusBarStyleLightContent

次に、アプリのデリゲートに移動し、ウィンドウの RootViewController を設定する次のコードを貼り付けます。

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0"))
{
    UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,320, 20)];
    view.backgroundColor=[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:1.0];
    [self.window.rootViewController.view addSubview:view];
}

ビンゴ。それは私のために働いています。

于 2014-01-10T12:40:41.537 に答える
19

iOS 7 では、Apple 開発者ドキュメントで説明されているように、個々のビュー コントローラーでステータス バーの外観を決定できます。

iOS 7 では、アプリの実行中にステータス バーのスタイルを調整する機能がビュー コントローラーに提供されます。ステータス バーのスタイルを動的に変更する良い方法は、実装preferredStatusBarStyleして (アニメーション ブロック内で) ステータス バーの外観を更新し、 を呼び出すことsetNeedsStatusBarAppearanceUpdateです。

ステータス バーの外観をグローバルに設定するには、2 段階のプロセスがあります。

まず、ステータス バーの外観をビューごとに設定したくないことを iOS に伝える必要があります。

次に、担当して実際に新しいグローバル ステータス バー スタイルを設定する必要があります。

ビューごとのステータス バー コントロールを無効にするには、 でView controller-based status bar appearanceプロパティを設定する必要がありますInfo.plist

Project Navigator を開き、iOS アプリのプロジェクトを選択してから、[Info] タブを選択します。

行にカーソルを合わせ、表示されるプラス記号をクリックして、新しいプロパティを に追加します.plist

[キー] フィールドに入力View controller-based status bar appearanceし、[タイプ] フィールドが に設定されていることを確認しBooleanます。最後に、NO[値] フィールドに入力します。

ステータス バーのグローバル スタイルを設定するには、[情報] タブの下に別のプロパティを追加します。キーはStatus bar style、タイプはString、値はOpaque black styleです。

もう少し詳細とサンプルコードを含むブログ投稿を次に示します。

http://codebleep.com/setting-the-status-bar-text-color-in-ios-7/

于 2013-12-10T13:47:43.523 に答える
11

これはiOS 7 UI Transition Guideに記載されており、直接アクセスするには Apple 開発者 ID が必要です。関連する抜粋:

ステータス バーは透明なので、その後ろのビューが透けて見えます。[...]UIStatusBarStyle定数を使用して、ステータスバーのコンテンツを暗くするか明るくするかを指定します。

UIStatusBarStyleDefaultダークコンテンツを表示します。[...]

UIStatusBarStyleLightContentライトコンテンツを表示します。ダーク コンテンツがステータス バーの背後にある場合に使用します。

また、おそらく興味深い:

iOS 7 では、個々のビュー コントローラーからステータス バーのスタイルを制御し、アプリの実行中に変更できます。この動作をオプトインするには、UIViewControllerBasedStatusBarAppearanceキーをアプリのInfo.plistファイルに追加し、値を指定しますYES

このドキュメントも、Apple 開発者 ID でアクセスできます。

于 2013-07-16T14:24:01.280 に答える
11

単に呼び出す

[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

の中に

-(BOOL)application:(UIApplication *)application 
           didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}

私の方法は、AppDelegateiOS7で私にとって素晴らしい作品です。

于 2013-11-10T20:07:28.767 に答える
9

Swift で同じ結果が必要な場合は、AppDelegate.swift ファイルで次のコードを使用できます。

UINavigationBar.appearance().barStyle = .BlackTranslucent

ステータスバーのテキストは白くなります :-) !

于 2016-01-10T19:30:06.957 に答える
8

それでも info.plist を YES に設定して使用したい場合View controller-based status bar appearance、つまり各ビューコントローラーのステータスバーを変更できる場合は、ViewDidLoad のステータスバーの白いテキストに次を使用します。

[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
于 2015-02-05T12:28:35.257 に答える
8

要約すると、プロジェクトを編集してInfo.plist以下を追加します。

View controller-based status bar appearance:NO

Status bar style:Opaque black style

または、生のキー/値の plist がある場合

UIViewControllerBasedStatusBarAppearance:NO

UIStatusBarStyle:Opaque black style

于 2014-10-08T14:17:14.573 に答える
7

Plist で、これを追加します。

  • ステータス バーのスタイル:UIStatusBarStyleLightContent
  • コントローラー ベースのステータス バーの外観を表示します。NO
于 2014-07-19T06:36:09.837 に答える
7

ご質問に対する完全な回答をさせてください。ステータス バーのテキストの色を変更するのは非常に簡単ですが、iOS 7 では特に初心者にとっては少し混乱します。

ビュー コントローラーを選択し、右側の [シミュレートされたメトリック] に移動して、ストーリーボードで色を黒から白に変更しようとしている場合、それは機能せず、理由がわかりません。このように変更することで機能するはずですが、どのようにでも。

次に、plist に UIViewControllerBasedStatusBarAppearance プロパティが見つかりませんが、デフォルトではそこにはありません。+ボタンをクリックして自分で追加し、NOに設定する必要があります。

iOS 7 ステータスバーの文字色

最後に、AppDelegate.m ファイルに移動し、didFinishLaunchingWithOptions メソッドに次の行を追加する必要があります。

     [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

これにより、すべてのビュー コントローラーの色が白に変わります。お役に立てれば!

于 2015-06-30T17:38:28.790 に答える
6

これを機能させるための鍵は、フルスクリーン ビュー コントローラーのみがステータス バーのスタイルを決定することです。

ナビゲーション コントローラーを使用していて、ビュー コントローラーごとにステータス バーを制御したい場合は、UINavigationController をサブクラス化し、preferredStatusBarStyle を実装して、topViewController の設定を返すようにします。

ストーリーボード シーンのクラス参照を UINavigationController からサブクラスに変更してください (たとえば、以下の例の MyNavigationController)。

(以下は私にとってはうまくいきます。アプリがTabBarベースの場合、UITabBarControllerをサブクラス化することで同様のことをしたいと思うでしょうが、私はそれを試していません).

@interface MyNavigationController : UINavigationController

@end

@implementation MyNavigationController

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return self.topViewController.preferredStatusBarStyle;
}

@end
于 2013-10-16T18:21:41.987 に答える
5

スウィフト 3 - Xcode 8。

起動画面で最初にステータスバーを非表示にしたい場合は、これを試してください。

ステップ 1:に以下を追加しますinfo.plist

  • View controller-based status bar appearance価値NO
  • Status bar is initially hidden価値YES

ステップ 2:これをdidFinishLaunchingWithOptionsメソッドに記述します。

UIApplication.shared.isStatusBarHidden = false
UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
于 2016-12-19T12:31:23.650 に答える
4

これは info.plist から実行できます。

1) 「コントローラベースのステータスバーの外観を表示する」を「いいえ」に設定

2) 「ステータスバーのスタイル」を「UIStatusBarStyleLightContent」に設定

終わり

于 2013-11-13T17:23:17.430 に答える
4

iOS 13 ソリューション

UINavigationControllerUIViewController(誰が知っていた) のサブクラスです!

したがって、Navigation Controller に埋め込まれた View Controller を表示する場合、実際には埋め込まれた View Controller を表示しているわけではありません。あなたはナビゲーションコントローラーを提示しています!UINavigationControllerは、 のサブクラスとしてUIViewController、 と を継承preferredStatusBarStylechildForStatusBarStyleます。これらは必要に応じて設定できます。

次の方法のいずれかが機能するはずです。

  1. ダークモードを完全にオプトアウトする
    • info.plistに、次のプロパティを追加します 。
      • キー - UIUserInterfaceStyle(別名「ユーザー インターフェース スタイル」)
      • 値 - 光
  2. preferredStatusBarStyle内でオーバーライドUINavigationController

    • preferredStatusBarStyle( doc ) - ビュー コントローラーの優先ステータス バー スタイル
    • サブクラスまたは拡張UINavigationController

      class MyNavigationController: UINavigationController {
          override var preferredStatusBarStyle: UIStatusBarStyle {
              .lightContent
          }
      }
      

      また

      extension UINavigationController {
          open override var preferredStatusBarStyle: UIStatusBarStyle {
              .lightContent
          }
      }
      
  3. childForStatusBarStyle内でオーバーライドUINavigationController

    • childForStatusBarStyle( doc ) - システムがステータスバーのスタイルを決定するために使用する View Controller を必要とするときに呼び出されます
    • Appleのドキュメントによると、

      「コンテナー ビュー コントローラーがその子ビュー コントローラーの 1 つからステータス バー スタイルを派生させる場合、[このプロパティをオーバーライド] し、その子ビュー コントローラーを返します。nil を返すか、このメソッドをオーバーライドしない場合、self のステータス バー スタイルが使用されます。 。このメソッドからの戻り値が変更された場合は、setNeedsStatusBarAppearanceUpdate() メソッドを呼び出してください。"

    • つまり、ここで解決策 3 を実装しない場合、システムは上記の解決策 2 にフォールバックします。
    • サブクラスまたは拡張UINavigationController

      class MyNavigationController: UINavigationController {
          override var childForStatusBarStyle: UIViewController? {
              topViewController
          }
      }
      

      また

      extension UINavigationController {    
          open override var childForStatusBarStyle: UIViewController? {
              topViewController
          }
      }
      
    • 上記の任意のビュー コントローラーを返すことができます。次のいずれかをお勧めします。

      • topViewController(of UINavigationController) ( doc ) - ナビゲーション スタックの一番上にあるビュー コントローラー
      • visibleViewController(of UINavigationController) ( doc ) - ナビゲーション インターフェイスで現在表示されているビューに関連付けられているビュー コントローラー (ヒント: これには、「ナビゲーション コントローラー自体の上にモーダルに表示されたビュー コントローラー」を含めることができます)

注: をサブクラス化する場合はUINavigationController、IB の ID インスペクターを使用して、そのクラスをナビゲーション コントローラーに適用することを忘れないでください。

PSこれはiOS 13で動作します

于 2019-10-23T03:21:11.627 に答える
3

UINavigationController を使用する場合、iOS 9 と Swift 2.0 でこれを作成します

self.navigationController?.navigationBar.barStyle = UIBarStyle.Black

そして、モーダルセグエを使用する場合はこれを作成します

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .LightContent
}
于 2015-10-16T13:38:54.423 に答える
3

アプリケーションがUIStatusBarStyleLightContentデフォルトで持つ必要があるが、それでもUIStatusBarStyleDefault一部の画面で使用できるようにしたい場合は、コントローラー レベルでステータス バーの色を管理することを選択できますが、この場合preferredStatusBarStyleはすべてのビューで上書きする必要があります。コントローラー (または、他のすべてのビュー コントローラーが継承するベース ビュー コントローラーに実装します)。この問題を解決する別の方法を次に示します。

  • plistにUIViewControllerBasedStatusBarAppearancetoを設定しますNO
  • UIStatusBarStyleに設定UIStatusBarStyleLightContent

すべてのビュー コントローラーは、ステータス バーに白いテキストを使用します。黒いテキストのステータス バーが必要なビュー コントローラーにのみ、このメソッドを追加します。

-(void)viewWillAppear:(BOOL)animated  
{  
  [super viewWillAppear:animated];  
  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}    

-(void)viewWillDisappear:(BOOL)animated  
{  
  [super viewWillAppear:animated];  
  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}    
于 2015-12-09T15:19:19.850 に答える
2

これは私のために働いた:

  1. に を設定UIViewControllerBasedStatusBarAppearanceYESますplist

  2. メソッドのrootViewController実装が必要です

    -(UIStatusBarStyle)preferredStatusBarStyle
    

rootViewControllerは Cocoapods ( JASidePanelController) によって管理されているため、カテゴリを介してこのメ​​ソッドを追加しました。

#import "JASidePanelController+StatusBarStyle.h"

@implementation JASidePanelController (StatusBarStyle)

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

@end
于 2014-01-28T13:25:39.720 に答える
2
  • .plist ファイルのビュー コントローラー ベースのステータス バーの外観を削除し(作成した場合)、再作成します。

  • ステータスバーのスタイル不透明な黒のスタイルに設定

appDelegate で、didFinishLaunching の下に次のコードを追加します。

 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
于 2013-10-29T09:35:30.907 に答える
2

変更するだけ1) Info.plistコントローラーベースのステータスバーを表示appearance->NO 書き込み 2)

  [[UIApplication
 sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent]; 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
于 2016-04-27T13:37:38.763 に答える
1

Swiftとナビゲーションコントローラーのために私がしなければならなかったこと

extension UINavigationController {
    override open var preferredStatusBarStyle: UIStatusBarStyle {
       return .lightContent
    }   
}
于 2016-10-13T09:32:46.310 に答える
-3

ステータスバーの色を変えるとても簡単な方法。ナビゲーション コントローラーのサブクラスを作成します。

このコードをビューの didload メソッドに記述します。すべてのView Controllerでこのコードを有効にします

self.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName :
                                                                        [UIColor whiteColor],
                                               NSFontAttributeName:[UIFont boldSystemFontOfSize:19]};
于 2017-03-08T07:51:31.707 に答える