在Swift iOS 8中设置透明导航栏和状态栏的图像参考底图

tau*_*fan 10 ios swift

我是iOS快速开发的新手,我遇到了一个问题.我想设置透明导航栏并使透明导航栏和状态栏的图像底层如下图所示,

在此输入图像描述

但在我实现以下代码后,

self.navigationController!.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationController!.navigationBar.shadowImage = UIImage()
self.navigationController!.navigationBar.translucent = true
Run Code Online (Sandbox Code Playgroud)

结果是图像仍然在导航栏和状态栏下方,即使我将导航栏设置为透明.

在此输入图像描述

bik*_*ota 12

如果您没有使用默认导航栏,则将背景图像视图(将在状态栏下方显示)从顶部约束向上移动20px,然后使用以下命令清除状态栏背景颜色:

 override func viewDidLoad() {
    super.viewDidLoad()

    let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
        statusBar?.backgroundColor = UIColor.clear
}
Run Code Online (Sandbox Code Playgroud)

如果要将状态栏项目的颜色更改为白色,请使用:

 override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}
Run Code Online (Sandbox Code Playgroud)

输出将是 在此输入图像描述


Dha*_*esh 10

我尝试过与您提供的代码相同的代码:

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController!.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
    self.navigationController!.navigationBar.shadowImage = UIImage()
    self.navigationController!.navigationBar.translucent = true
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,你可以在这里看到结果:

在此输入图像描述

检查我的示例项目并找出您遗漏的内容.

希望它会有所帮助.

  • 1)最高约束必须是“超级”,而不是“安全区域”。2)如果您有tableV并使用ios11,请添加`tableV.contentInsetAdjustmentBehavior = .never` (2认同)