私のアプリケーションの背景は暗いですが、iOS 7ではステータスバーが透明になりました。だから何も見えず、隅にある緑色のバッテリーインジケーターだけです。ステータスバーのテキストの色をホーム画面のように白に変更するにはどうすればよいですか?
私のアプリケーションの背景は暗いですが、iOS 7ではステータスバーが透明になりました。だから何も見えず、隅にある緑色のバッテリーインジケーターだけです。ステータスバーのテキストの色をホーム画面のように白に変更するにはどうすればよいですか?
回答:
設定するUIViewControllerBasedStatusBarAppearance
にYES
の.plistファイルに。
でviewDidLoad
、[self setNeedsStatusBarAppearanceUpdate];
次のメソッドを追加します。
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
注:これは内のコントローラーでは機能しません。以下のTysonのコメントUINavigationController
を参照してください:)
Swift 3-これは内部のコントローラーで動作しUINavigationController
ます。このコードをコントローラー内に追加します。
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Swift 5およびSwiftUI
SwiftUIの場合、新しいswiftファイルを作成します HostingController.swift
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
次に、次のコード行を SceneDelegate.swift
window.rootViewController = UIHostingController(rootView: ContentView())
に
window.rootViewController = HostingController(rootView: ContentView())
または、ビューコントローラベースのステータスバーの表示を無効にすることもできます。
View controller-based status bar appearance
しNO
ますInfo.plist
。[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
注:このメソッドはiOS9で廃止されました。preferredStatusBarStyle
代わりにUIViewControllerで使用してください。(Apple Developer Libraryを参照)
これは、コードを一切記述せずに実行できます。
アプリ全体でステータスバーのテキストの色を白にするには、次の操作を行います
あなたにplistのプロジェクトファイルを:
Transparent black style (alpha of 0.5)
NO
NO
UIStatusBarStyleLightContent
するplist info
HOWEVERには何も呼び出されませんTransparent Black
:)さらに、View controller-based status bar appearance
元々そこにないので追加する必要があり、それを機能させるために必要なものがすべてあります:)
<key>UIStatusBarStyle</key> <string>UIStatusBarStyleLightContent</string> <key>UIViewControllerBasedStatusBarAppearance</key> <false/>
注:最も投票された回答はiOS 7/8では機能しません
Info.plistで、「コントローラーベースのステータスバーの外観を表示」をNOに設定します。
AppDelegateに追加
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
に
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
......
...
}
このソリューションはiOS 7/8で機能します
私にとって、他の回答(および他のソース/ドキュメント)のすべてのものを使用しても何も起こりませんでした。役に立ったのは、XIBでナビゲーションバーのスタイルを「黒」に設定することでした。これにより、コードがまったくないテキストが白に変わりました。
それは私にとってはうまくいかなかったので、ここに作業ソリューションがあります...
でInfo.plist
、行を追加します。
UIViewControllerBasedStatusBarAppearance
、値を設定しますNO
。
次に、のAppDelegateでdidFinishLaunchingWithOptions
、次の行を追加します。
[application setStatusBarHidden:NO];
[application setStatusBarStyle:UIStatusBarStyleLightContent];
このためにコードを実行する必要はありません
次のように、info.plistに「コントローラベースのステータスバーの外観を表示する」キーを追加する必要があります。
&値のタイプをブールに設定し、値をNOに設定します。次に、プロジェクト設定をクリックしてから、[全般]タブをクリックし、[展開情報]で、次のように優先ステータスバーのスタイルを.Lightに設定します。
それでおしまい。
次の2つのステップのみ:
ステップ1:
の[情報]タブで、project target
行を追加します。
UIViewControllerBasedStatusBarAppearance
、設定値NO
。
ステップ2:
プロジェクトでAppDelegate.m
:
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
…
[application setStatusBarStyle:UIStatusBarStyleLightContent];
…
}
これは、Golden Master iOS 7およびXcode 5 GMシード、および2013年9月18日にリリースされたiOS7 SDKで機能します(少なくともナビゲーションコントローラーは非表示)。
設定しthe UIViewControllerBasedStatusBarAppearance
にNO
して
Info.plist
。
でViewDidLoad
メソッドまたはどこでも、どこに変更ステータスバーのスタイルにしたいですか:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
UIViewControllerがUINavigationController内にある場合は、BarStyleを設定する必要があります。
-[UINavigationBar setBarStyle:UIBarStyleBlack]
元の回答はこちら
Interface Builderを介して作成された埋め込みナビゲーションコントローラーがある場合は、ナビゲーションコントローラーを管理するクラスで以下を設定してください。
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
それで十分です。
単にAppdelegate
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
まあ、これは本当に私にとっては簡単な仕事のようです。
アプリのに移動しますinfo.plist
。
View controller-based status bar appearance
にはNO
Status bar style
にはUIStatusBarStyleLightContent
次に、アプリのデリゲートに移動し、Windowsの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];
}
ビンゴ。それは私のために働いています。
Swiftでは、2つのステップだけで非常に簡単です。info.plistに移動し、キーView controller-based status bar appearance
を「NO」に変更します。次に、Appdelegateでこの行をdidfinishlaunchingwithoptionsメソッドに追加します。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}
これはiOS9で非推奨になりました。rootviewcontrollerでこのプロパティをオーバーライドする必要があります。
これを行うことはiOS 9で非推奨になり、rootviewcontrollerでこれを行う必要があります
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
iOS 7では、Apple開発者向けドキュメントで説明されているように、個々のビューコントローラーでステータスバーの外観を決定できます。
iOS 7では、ビューコントローラーがアプリの実行中にステータスバーのスタイルを調整できるようになっています。ステータスバーのスタイルを動的に変更する良い方法は、ステータス
preferredStatusBarStyle
ブロックの外観を実装してアニメーションブロック内で更新し、を呼び出すことsetNeedsStatusBarAppearanceUpdate
です。
ステータスバーの外観をグローバルに設定するには、2つの手順を実行します。
まず、ステータスバーの外観をビューごとに設定しないことをiOSに伝える必要があります。
次に、担当して実際に新しいグローバルステータスバースタイルを設定する必要があります。
ビューごとのステータスバーコントロールを無効にするには、でView controller-based status bar appearance
プロパティを設定する必要がありますInfo.plist
。
プロジェクトナビゲーターを開き、iOSアプリのプロジェクトを選択して、[情報]タブを選択します。
行にカーソルを合わせ、表示されるプラス記号をクリックして、新しいプロパティをに追加します.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/
追加の必要はありません。このコードをviewControllerに記述して、ステータスバーの色を白にしてください。
- (UIStatusBarStyle)preferredStatusBarStyle{return UIStatusBarStyleLightContent;}
すべての回答が特定のシナリオで機能するため、すべての回答が問題を実際に示しているわけではないと思います。ただし、すべてのケースをカバーする必要がある場合は、以下のポイントに従ってください。
ステータスバーのライトスタイルが必要な場所に応じて、常に次の3つの点に留意してください。
1)起動画面またはその他の場所でステータスバーが必要な場合、それを制御できない場所(ビューコントローラーではなく、起動画面などの一部のシステム制御要素/瞬間) 。プロジェクト設定に移動します。
2)ナビゲーションコントローラー内にコントローラーがある場合 次のように、インターフェイスビルダーで変更できます。
a)ナビゲーションコントローラーのナビゲーションバーを選択します
b)次に、ナビゲーションバーのスタイルを「黒」に設定します。これは、ステータスバーの下に「黒」->暗い背景が表示されるため、ステータスバーが白に設定されるためです。
または次のようにコードでそれを行います
navigationController?.navigationBar.barStyle = UIBarStyle.Black
3)独自のステータスバースタイルを持つ必要があるコントローラーのみがあり、UINavigationControllerとしてコンテナー構造に埋め込まれていない場合
コントローラーのコードでステータスバーのスタイルを設定します。
単に電話する
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];
の中に
-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}
AppDelegate
私のiOS7での使用に最適な方法。
View controller-based status bar appearance = NO
これは、iOS 7 UI移行ガイドに記載されています。直接アクセスするには、Apple開発者IDが必要です。関連する抜粋:
ステータスバーは透明なので、背後のビューが透けて見えます。[...]
UIStatusBarStyle
ステータスバーのコンテンツを暗いか明るいかを指定するには、定数を使用します:
UIStatusBarStyleDefault
暗いコンテンツを表示します。[...]
UIStatusBarStyleLightContent
軽いコンテンツを表示します。暗いコンテンツがステータスバーの背後にある場合に使用します。
また、おそらく興味深い:
iOS 7では、個々のvewコントローラーからステータスバーのスタイルを制御し、アプリの実行中に変更できます。この動作を有効にする
UIViewControllerBasedStatusBarAppearance
には、アプリのInfo.plist
ファイルにキーを追加して、値を指定しますYES
。
このドキュメントを一読することをお勧めします。このドキュメントも、Apple開発者IDでアクセスできます。
ここにあるアップルのガイドライン/命令ステータスバーの変更については。ステータスバーでは、ダークとライト(白と黒)のみが許可されています。
ここにある-ステータスバーのスタイルを変更する方法:
ステータスバーのスタイル、アプリケーションレベルを設定UIViewControllerBasedStatusBarAppearance
する場合NO
は、 `.plist 'ファイルでに設定します。
ステータスバーのスタイルを設定したい場合は、ビューコントローラーレベルで次の手順に従います。
UIViewControllerBasedStatusBarAppearance
にYES
して.plist
、あなただけのUIViewControllerレベルでセットステータスバーのスタイルに必要がある場合は、ファイル。viewDidLoad追加関数で- setNeedsStatusBarAppearanceUpdate
ビューコントローラーのpreferredStatusBarStyleをオーバーライドします。
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
ステータスバースタイルのセットアップレベルに従って.plistの値を設定します。
ここでは、アプリケーションの起動中またはビューコントローラーのviewDidLoad中にステータスバーの背景色を変更/設定するためのハックトリックを示します。
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
return true
}
}
or
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
}
}
これが結果です:
私はいくつか異なることをしました、そしてそれは私のために働きます。
コードを変更することなく、.plistファイルを次のように構成しました。
お役に立てば幸いです。
ビューコントローラーごとに、ストーリーボードの「ステータスバー」の「シミュレートされたメトリック」プロパティを「推定」から「ライトコンテンツ」に変更します
View controller-based status bar appearance
YESに設定されたinfo.plistで引き続き使用する場合、つまり各ビューコントローラーのステータスバーを変更できる場合は、ViewDidLoadのステータスバーの白いテキストに次を使用します。
[[[self navigationController] navigationBar] setBarStyle:UIBarStyleBlackTranslucent];
info.plistで、フィールド値を設定しますNO ビューコントローラベースのステータスバーの外観を設定し、ターゲット>一般設定でステータスバースタイルのライトを設定します。
質問に対する完全な回答をさせてください。ステータスバーのテキストの色を変更するのは非常に簡単ですが、iOS 7では特に初心者のために少し混乱しています。
ストーリーボードで、ビューコントローラーを選択して右側の[シミュレーションメトリック]に移動し、色を黒から白に変更しようとしても、機能せず、理由がわかりません。これはどのように変更しても機能するはずです。
次に、plistにUIViewControllerBasedStatusBarAppearanceプロパティはありませんが、デフォルトではありません。+ボタンをクリックして自分で追加し、NOに設定する必要があります。
iOS 7ステータスバーのテキストの色
最後に、AppDelegate.mファイルに移動して、didFinishLaunchingWithOptionsメソッドに次の行を追加し、次の行を追加する必要があります。
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
これにより、すべてのビューコントローラーの色が白に変わります。お役に立てれば!