默认情况下,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
}
}
我在想这是否是最好的方法...一定有更好的方法来实现这个目标。
更新
这是一个糟糕的想法,因为:
不要遮盖或特别强调关键的显示特征。 不要试图通过在屏幕顶部和底部放置黑色条来隐藏设备的圆角、传感器壳或访问主屏幕的指示器。也不要使用视觉装饰物,如括号、镶边、形状或指导性文本,来特别强调这些区域。
视图顶部的圆角可能看起来很好,但您将需要添加代码异常处理,在其他iPhone上不显示圆角。你需要在所有的ViewControllers / Storyboards中加入这个异常处理.. 这并不是很好。
视图底部的圆角在截图中会呈现直线,但手动设置的顶部圆角则不会。当用户分享您的应用时,这将变得很丑陋。