如何获得一个黑色的状态栏上的iPhone X iOS上的11

问题描述:

默认情况下在iPhone X状态栏看起来是这样的:如何获得一个黑色的状态栏上的iPhone X iOS上的11

enter image description here

但我想实现这一点:

enter image description here

我尝试将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

这是一个可怕的想法,因为:

不要嘛sk或特别注意关键显示功能。不要试图隐藏设备的圆角,传感器外壳或 指示灯,通过在屏幕顶部和底部放置黑条来访问主屏幕。不要使用类似于 括号,边框,形状或教学文字的视觉装饰品来呼吁特殊的 注意这些区域。

  • 圆角在视图的顶部看起来不错,但你必须在代码中添加例外,以确保圆角不会对其他的iPhone中。你需要把它放在你的所有ViewController/Storyboard中。这并不是很好。

  • 视图底部的圆角将在屏幕截图中直线显示,但顶部的角落(手动设置)不会。当用户分享你的应用程序时,这会很难看。

+1

安全区域已经引起一大堆的麻烦向后兼容,这只是将是燃料在火。 – Annjawn

安全区域布局是解决您的问题的方法。

我试着在我现有的项目中解决方案,它工作正常。

  • 将黑色背景颜色(或任何你想要的)设置为视图控制器的主视图。
  • 现在添加子视图(带有白色背景)并设置其相对于安全区域布局的约束(或者如果Xcode版本低于9,则遵循顶部和底部布局指南)。
  • 将此子视图(以白色背景)作为主视图,并使用它处理进一步的设计。

下面是结果示例快照,通过启用或禁用安全区域布局,我测试和实施。

仅供参考:在这些快照中,主视图具有红色背景,子视图具有蓝色背景色。

安全区域布局: enter image description here

自动版式

enter image description here

+0

谢谢!我更新了我的问题,也许这毕竟不是一个好主意。但是要继续练习:这比使用代码稍微好一些,但是您仍然必须对每个视图控制器重复此操作..不是理想的权利吗? – Tieme

+0

我创建了一个IBDesignable自定义视图接口类,并使用相同的..你和你的方法是绝对正确的,这可能需要每个视图控制器的手动练习。但这不会很难手动完成。此外,这个想法可以控制您的接口区域,超出了其指南中的苹果限制。在这个阶段,直到我们找到永久的解决方案,这可能是好的。祝你今天愉快 :) – Krunal