默认情况下,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
}
}
我想知道这是否是最好的方法.. 必须有更好的方法来实现这一点。
更新
这是一个可怕的想法,因为:
- 正如@Moritz指出的那样,Apple 的指导方针明确禁止这样做:
不要掩盖或特别注意关键显示功能。不要试图通过在屏幕顶部和底部放置黑条来隐藏设备的圆角、传感器外壳或访问主屏幕的指示器。也不要使用括号、边框、形状或说明性文字等视觉装饰来引起对这些区域的特别注意。
视图顶部的圆角可能看起来不错,但您必须在代码中添加例外以确保圆角不会显示在其他 iPhone 上。你需要把它放在你所有的 ViewControllers / Storyboards 中。这不是很好。
视图底部的圆角将直接显示在屏幕截图中,但顶部的角(手动设置)不会。当用户共享您的应用程序时,这将是丑陋的。