繁体   English   中英

如何在Swift中使iPhone状态栏透明?

[英]How do I make the iPhone status bar transparent in Swift?

我希望隐藏导航和状态栏以使其透明。 我下面有一张要占据整个空间的图像。 到目前为止,我必须隐藏导航栏,但状态栏仍为白色-这在viewDidLoad()

self.navigationController?.setNavigationBarHidden(true, animated: true)

另外,如何将后退按钮重新添加到导航栏中?

谢谢!

我当前的iPhone模拟器的屏幕截图:

在此处输入图片说明

添加Mohy Gh的代码后的屏幕截图

根据Mohy Gh的代码进行编辑:

Swift 3:对于整个应用程序:

在您的AppDelegatedidFinishLaunchingWithOptions方法中执行此操作,而不是隐藏导航栏:

// Sets navigationBar's background to a blank/empty image       
UINavigationBar.appearance().setBackgroundImage(UIImage(),
                                                for: .default)

// Sets shadow (line below the bar) to a blank image
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().isTranslucent = true

编辑:在您的View控制器中隐藏一个特定View控制器的navigationBar的操作如下:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    let navigationBar = self.navigationController?.navigationBar

    navigationBar?.setBackgroundImage(UIImage(), for: .default)
    navigationBar?.shadowImage = UIImage()
    navigationBar?.isTranslucent = true
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)

    let navigationBar = self.navigationController?.navigationBar

    navigationBar?.shadowImage = nil
    navigationBar?.setBackgroundImage(nil, for: .default)
    navigationBar?.isTranslucent = false
}

使得之后navigationBar透明,您需要在设置imageView顶级制约topLayoutGuid = 0

如果您还想隐藏一个viewController statusBar ,也可以将其放在所需的viewController中:

override var prefersStatusBarHidden: Bool {
    return true
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM