デフォルトでは、iPhone Xのステータスバーは次のようになります。
しかし、私はこれを達成したいと思います:
preferredStatusBarStyle
をlightContent
に設定しようとしましたが、ステータスバーの背景を黒に設定して初めて機能しました。
丸い角を修正するために、丸い角を持つ別のサブビューを追加しました。
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に配置する必要があります。
ビューの下部の丸い角はスクリーンショットではまっすぐに表示されますが、上部の角(手動で設定)は表示されません。ユーザーがアプリを共有すると、これは見苦しくなります。
セーフエリアレイアウトは、問題の解決策です。
私は既存のプロジェクトで解決策を試しましたが、うまくいきました。
結果のサンプルスナップショットを次に示します。セーフエリアレイアウトを有効または無効にすることで、テストと実装を行いました。
参考:これらのスナップショットでは、メインビューの背景は赤で、子ビューの背景色は青です。
AutoLayout