web-dev-qa-db-ja.com

iPhone 6 iOS 8シミュレーターのみに黒いテキストを表示するステータスバー

Xcode 6 GMでiOS 7アプリをiOS 8に変換しようとしています.iOS 5を搭載したiPhone 5s以下のシミュレーターでiOS 8を実行するとすべてうまくいきますが、iPhone 6および6 Plusシミュレーターではステータスバーいつでもどこでもそうであるように、白の代わりに黒のテキストがあります。 Info.plist UIStatusBarStyleをXcodeを介して「Transparent Black Style(alpha of 0.5)」に設定しましたが、それは他のどこでも望ましい効果があるようです。何が起こっているのでしょうか?

(絵コンテにはまだ触れていませんが、それで何か可能性がありますか?しばらくそれを延期できることを望んでいました:)

45
Mohamed Hafez

このバグは、新しいデバイスの解像度に合わせてアプリがスケーリングされている場合にのみ発生します。

簡単な修正方法(8.1でこれが解決されるかどうかを知っている人)は、アプリパッケージで適切な解像度の読み込み画像を提供することです。

から https://developer.Apple.com/ios/human-interface-guidelines/graphics/launch-screen/

For iPhone 7, iPhone 6s, iPhone 6:

750 x 1334 (@2x) for portrait
1334 x 750 (@2x) for landscape

For iPhone 7 Plus, iPhone 6s Plus, iPhone 6 Plus:

1242 x 2208 (@3x) for portrait
2208 x 1242 (@3x) for landscape

私のアプリではポートレートのみをサポートしているため、750x1334と1242x2208を提供することで修正されました。

また、明らかでない場合に備えて確認するために、ステータスバーのスタイルにUIStatusBarStyleLightContentを使用する必要があります。

42
Aaron Wasserman

だからここに私がそれを修正した方法があります

PLISTビューコントローラーベースのステータスバーステータスバースタイルなしUIStatusBarStyleLightContent

AppDelegateでDidFinishLaunching

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    [self.window setBackgroundColor:[UIColor whiteColor]];

各View Controllerで

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
50
Taylor Pierce

私のアプリのステータスバーは、プロジェクト/ターゲット設定のみを使用してiOS 7で正常に機能していました。

Status bar style = UIStatusBarStyleLightContent

そして

View controller-based status bar appearance = NO

しかし、iOS 8(iPhone 6およびiPhone 6 Plusシミュレーター)では、ステータスバーは表示されませんでした。 View Controllerベースのステータスバーの外観をYESに変更してから追加:

    // Objective C
    - (UIStatusBarStyle) preferredStatusBarStyle {
         return UIStatusBarStyleLightContent;
    }
    //Swift
    override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
    }

viewControllerに追加すると、最初のルートコントローラーが起動した後にのみ、白いステータスバーが再び表示されます。最初の起動中、ステータスバーは黒のままです。

16
Tony Adams

同様の回答(現在2番目に投票されています)が既に投稿されています。この投稿を最新の状態に保つために購入してください。これがSwiftバージョンです。

  1. Info-plistファイルにコントローラーベースのステータスバーの外観を表示という行を追加し、そのブール値を[〜#〜] no [〜#〜]に設定します。

  2. AppDelegate.Swiftファイルに、次のメソッドを追加します:func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { UIApplication.sharedApplication().statusBarStyle = .LightContent return true }

  3. この手順を実行するためにこの手順を実行する必要はありませんでした(つまり、手順1と2を実行すると動作する可能性があります)。そうでない場合は、各ViewControllersに次のメソッドを追加してみてください。

    override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent }

これがお役に立てば幸いです。

ロイック

15
Loic Verrall
  1. Info.plistを開きます
  2. 「ビューベースのステータスバーの外観」(ブール)と呼ばれる新しいプロパティを追加し、その値を「NO」に設定します。
  3. 「ステータスバースタイル」(文字列)という新しいプロパティを追加し、その値を「不透明な黒スタイル」に設定します

できた.

7
José

ステップ1:アプリのinfo.plistファイルを開き、UIViewControllerBasedStatusBarAppearanceをNOに設定します

ステップ2:アプリのinfo.plistファイルおよび「ステータスバーのスタイル」をUIStatusBarStyleLightContentに設定します

6
Kakashi

AppDelegatedidFinishLaunchingWithOptions:メソッドに次の行を追加します

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
6

シミュレータに問題がある可能性があります。これを使用して、特定のView Controllerのデフォルトのステータスバーまたはステータスバーを上書きします。

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
} //This is Swift code
3
Saqib Omer

カテゴリを使用して基本クラスの動作をオーバーライドするのは悪いスタイルであることは知っていますが、これは機能し、それを修正する最も迅速な解決策になる可能性があります。

ステップ#1:UIViewControllerBasedStatusBarAppearanceまたはView controller-based status bar appearanceは、アプリケーションのplistファイルでYESに設定されます。

ステップ#2:次のコードをプロジェクトに追加します。

@implementation UIViewController (StatusBarColorFix)

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}

@end
2
Sandy Chapman

これに対する適切な修正は、iPhone 6モデルで使用される新しい起動イメージのペン先サポートを使用することです。 iOS 8にはバグがあるようです。これは、起動時にiPhone 6モデルがステータスバーのスタイルを正しくチェックしないことを意味しますが、起動ペンを追加すると解決します。

アーロン・ワッサーマンが指摘したように、iPhone 6および6+の起動PNGも指定できます。正しく設定すれば、問題も解決するようです。

1
CMash

私は次の手順を実行しましたが、iOS 8以降でも動作するはずです。

1)プロパティを追加コントローラーベースのステータスバーの外観を表示 => [〜#〜] no [〜#〜] Info.plist。
2)AppDelegate.m- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsに次のコードを追加します

    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    [self.window setBackgroundColor:[UIColor redColor]]; // Change color as per need.

3)ViewControllerのメソッドをオーバーライドします

- (UIStatusBarStyle) preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
0
Aamir

Swift 4およびiOS 11

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    application.statusBarStyle = .lightContent
    return true
}
0
eladHayun

Appleガイドライン/指示 ステータスバー/テキストの色の変更についてです。

ここにある-ステータスバーのスタイルを変更する方法:

ステータスバーのスタイル、アプリケーションレベルを設定する場合は、 `.plist 'ファイルでUIViewControllerBasedStatusBarAppearanceNOに設定します。

または、プログラムでApp Delegateから実行できます。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    application.statusBarStyle = .lightContent
    return true
}

ビューコントローラーレベルでステータスバーのスタイルを設定する場合は、次の手順を実行します。

  1. UIViewControllerレベルでのみステータスバーのスタイルを設定する必要がある場合は、.plistファイルでUIViewControllerBasedStatusBarAppearanceYESに設定します。
  2. ViewDidLoadの追加機能-setNeedsStatusBarAppearanceUpdate

  3. view ControllerのpreferredStatusBarStyleをオーバーライドします。

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

ステータスバースタイルのセットアップレベルに従って.plistの値を設定します。 enter image description here

0
Krunal

ストーリーボードでルートビューコントローラーを選択し、ステータスバーの種類をデフォルトに設定します

0
Shafraz Buhary