ステータスバーの動作について少し混乱しています
透明なステータスバーは必要ありません。固定して黒い色が必要です。iOS6と同じ
私は多くのことを試しましたが、最初にアプリを起動したときにのみ黒色が表示され、デバイスを横向きに回転させて再度縦向きにすると、ナビゲーションバーの色が表示されます。
私が間違っていること。
誰でも私を案内してください。
これは私が得ているものです
これが私が望む方法です
ステータスバーの動作について少し混乱しています
透明なステータスバーは必要ありません。固定して黒い色が必要です。iOS6と同じ
私は多くのことを試しましたが、最初にアプリを起動したときにのみ黒色が表示され、デバイスを横向きに回転させて再度縦向きにすると、ナビゲーションバーの色が表示されます。
私が間違っていること。
誰でも私を案内してください。
これは私が得ているものです
これが私が望む方法です
ステータスバーの色を設定するためにハックを行うことができます。アプリは Apple によって拒否されることはありませんが、Apple が次の iOS バージョンでこの動作を変更しないという保証はありません。
- (void)setStatusBarColor:(UIColor *)color {
id statusBarWindow = [[UIApplication sharedApplication] valueForKey:@"_statusBarWindow"];
NSString *statusBarWindowClassString = NSStringFromClass([statusBarWindow class]);
if ([statusBarWindowClassString isEqualToString:@"UIStatusBarWindow"]) {
NSArray *statusBarWindowSubviews = [statusBarWindow subviews];
for (UIView *statusBarWindowSubview in statusBarWindowSubviews) {
NSString *statusBarWindowSubviewClassString = NSStringFromClass([statusBarWindowSubview class]);
if ([statusBarWindowSubviewClassString isEqualToString:@"UIStatusBar"]) {
[statusBarWindowSubview setBackgroundColor:color];
}
}
}
}
これは、iOS8、Swift、Xcode 6.3 のソリューションです。
背景色を追加する:
var statusBarBackground = UIView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, 30))
statusBarBackground.backgroundColor = UIColor.blackColor()
statusBarBackground.tag = 13
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window!.rootViewController!.view.addSubview(statusBarBackground)
appDelegate.window!.rootViewController!.view.bringSubviewToFront(navigationController!.navigationBar)
背景色を削除します。
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
for sv in appDelegate.window!.rootViewController!.view.subviews {
if sv.tag == 13 {
sv.removeFromSuperview()
}
}
viewController のビューに statusBarBackground を追加しなかったのはなぜですか? UIDocumentInteractionController Preview ビューにこれが必要だったため、現在のところ、カスタマイズは許可されていません。
statusBarBackground 30 を高くしたのはなぜですか? 私のナビゲーションバーは角が丸くなっているため(画像ではなくマスクレイヤーを使用)、ナビゲーションバーの背後にビューが表示されます(ステータスバーの背景と同じ色にしたい.
まだ確認中: プレビューをタップすると、ナビゲーション バーが上に移動しますが、(もちろん) statusVarBackground は残ります。プレビューがタップされたことを教えてくれる代理人はいません。アイデアがある場合は、コメントに残してください。