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)」に設定しましたが、それは他のどこでも望ましい効果があるようです。何が起こっているのでしょうか?
(絵コンテにはまだ触れていませんが、それで何か可能性がありますか?しばらくそれを延期できることを望んでいました:)
このバグは、新しいデバイスの解像度に合わせてアプリがスケーリングされている場合にのみ発生します。
簡単な修正方法(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を使用する必要があります。
だからここに私がそれを修正した方法があります
PLISTビューコントローラーベースのステータスバーステータスバースタイルなしUIStatusBarStyleLightContent
AppDelegateでDidFinishLaunching
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
[self.window setBackgroundColor:[UIColor whiteColor]];
各View Controllerで
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
私のアプリのステータスバーは、プロジェクト/ターゲット設定のみを使用して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に追加すると、最初のルートコントローラーが起動した後にのみ、白いステータスバーが再び表示されます。最初の起動中、ステータスバーは黒のままです。
同様の回答(現在2番目に投票されています)が既に投稿されています。この投稿を最新の状態に保つために購入してください。これがSwiftバージョンです。
Info-plistファイルにコントローラーベースのステータスバーの外観を表示という行を追加し、そのブール値を[〜#〜] no [〜#〜]に設定します。
AppDelegate.Swiftファイルに、次のメソッドを追加します:func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { UIApplication.sharedApplication().statusBarStyle = .LightContent return true }
この手順を実行するためにこの手順を実行する必要はありませんでした(つまり、手順1と2を実行すると動作する可能性があります)。そうでない場合は、各ViewControllersに次のメソッドを追加してみてください。
override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent }
これがお役に立てば幸いです。
ロイック
できた.
ステップ1:アプリのinfo.plistファイルを開き、UIViewControllerBasedStatusBarAppearanceをNOに設定します
ステップ2:アプリのinfo.plistファイルおよび「ステータスバーのスタイル」をUIStatusBarStyleLightContentに設定します
AppDelegate
のdidFinishLaunchingWithOptions:
メソッドに次の行を追加します
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
シミュレータに問題がある可能性があります。これを使用して、特定のView Controllerのデフォルトのステータスバーまたはステータスバーを上書きします。
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
} //This is Swift code
カテゴリを使用して基本クラスの動作をオーバーライドするのは悪いスタイルであることは知っていますが、これは機能し、それを修正する最も迅速な解決策になる可能性があります。
ステップ#1:UIViewControllerBasedStatusBarAppearance
またはView controller-based status bar appearance
は、アプリケーションのplistファイルでYES
に設定されます。
ステップ#2:次のコードをプロジェクトに追加します。
@implementation UIViewController (StatusBarColorFix)
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
@end
これに対する適切な修正は、iPhone 6モデルで使用される新しい起動イメージのペン先サポートを使用することです。 iOS 8にはバグがあるようです。これは、起動時にiPhone 6モデルがステータスバーのスタイルを正しくチェックしないことを意味しますが、起動ペンを追加すると解決します。
アーロン・ワッサーマンが指摘したように、iPhone 6および6+の起動PNGも指定できます。正しく設定すれば、問題も解決するようです。
私は次の手順を実行しましたが、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;
}
Swift 4およびiOS 11
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent
return true
}
Appleガイドライン/指示 ステータスバー/テキストの色の変更についてです。
ここにある-ステータスバーのスタイルを変更する方法:
ステータスバーのスタイル、アプリケーションレベルを設定する場合は、 `.plist 'ファイルでUIViewControllerBasedStatusBarAppearance
をNO
に設定します。
または、プログラムでApp Delegateから実行できます。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.statusBarStyle = .lightContent
return true
}
ビューコントローラーレベルでステータスバーのスタイルを設定する場合は、次の手順を実行します。
.plist
ファイルでUIViewControllerBasedStatusBarAppearance
をYES
に設定します。ViewDidLoadの追加機能-setNeedsStatusBarAppearanceUpdate
view ControllerのpreferredStatusBarStyleをオーバーライドします。
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
ステータスバースタイルのセットアップレベルに従って.plistの値を設定します。
ストーリーボードでルートビューコントローラーを選択し、ステータスバーの種類をデフォルトに設定します