web-dev-qa-db-ja.com

iOS 11のiPhone Xで黒のステータスバーを取得する方法

デフォルトでは、iPhone Xのステータスバーは次のようになります。

enter image description here

しかし、私はこれを達成したいと思います:

enter image description here

preferredStatusBarStylelightContentに設定しようとしましたが、ステータスバーの背景を黒に設定して初めて機能しました。

丸い角を修正するために、丸い角を持つ別のサブビューを追加しました。

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .black

        let roundedView = UIView(
            frame: CGRect(
                x: 0,
                y: UIApplication.shared.statusBarFrame.height,
                width: view.frame.width,
                height: view.frame.height
            )
        )
        roundedView.layer.cornerRadius = 10
        roundedView.layer.masksToBounds = true
        roundedView.backgroundColor = .white
        view.addSubview(roundedView)

        let label = UILabel(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 60))
        label.text = "Black statusbar!"
        label.textAlignment = .center
        roundedView.addSubview(label)
    }

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}

これが最良のアプローチかどうか疑問に思っています。これを達成するためのより良い方法がなければなりません。


[〜#〜] update [〜#〜]

これはひどい考えです:

キー表示機能をマスクしたり、特別な注意を喚起したりしないでください。上下に黒いバーを配置して、ホーム画面にアクセスするためのデバイスの丸い角、センサーハウジング、またはインジケーターを非表示にしないでください画面の。これらの領域に特別な注意を喚起するために、ブラケット、ベゼル、形状、または説明テキストなどの視覚的な装飾を使用しないでください。

  • ビューの上部の丸い角は素敵に見えるかもしれませんが、他のiPhoneで丸い角が表示されないように、コードに例外を追加する必要があります。これをすべてのViewControllers/Storyboardsに配置する必要があります。

  • ビューの下部の丸い角はスクリーンショットではまっすぐに表示されますが、上部の角(手動で設定)は表示されません。ユーザーがアプリを共有すると、これは見苦しくなります。

11
Tieme

セーフエリアレイアウトは、問題の解決策です。

私は既存のプロジェクトで解決策を試しましたが、うまくいきました。

  • View Controllerのメインビューに黒の背景色(または必要なもの)を設定します。
  • 次に、子ビュー(白い背景)を追加し、セーフエリアレイアウトに関連する制約を設定します(またはXcodeバージョンが9未満の場合は、上下のレイアウトガイドに従います)。
  • この子ビュー(背景が白)をメインビューと見なし、さらにデザインを進めます。

結果のサンプルスナップショットを次に示します。セーフエリアレイアウトを有効または無効にすることで、テストと実装を行いました。

参考:これらのスナップショットでは、メインビューの背景は赤で、子ビューの背景色は青です。

セーフエリアレイアウト:enter image description here

AutoLayout

enter image description here

15
Krunal