1

ステータスバーの動作について少し混乱しています

透明なステータスバーは必要ありません。固定して黒い色が必要です。iOS6と同じ

私は多くのことを試しましたが、最初にアプリを起動したときにのみ黒色が表示され、デバイスを横向きに回転させて再度縦向きにすると、ナビゲーションバーの色が表示されます。

私が間違っていること。

誰でも私を案内してください。

これは私が得ているものです

ここに画像の説明を入力

これが私が望む方法です

ここに画像の説明を入力

4

2 に答える 2

1

ステータスバーの色を設定するためにハックを行うことができます。アプリは 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];
        }
    }
}
}
于 2014-11-06T09:43:16.280 に答える
0

これは、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 は残ります。プレビューがタップされたことを教えてくれる代理人はいません。アイデアがある場合は、コメントに残してください。

于 2015-05-07T04:17:36.653 に答える