将状态栏和导航栏设置为相同的颜色

问题描述 投票:0回答:5

enter image description here

嗨,我想将状态栏设置为与UINavigationBar完全相同的颜色。我在下面的代码中使用完全相同的颜色,但从图像中可以看出,它们的颜色不同。是否有任何方法可以使它们相同。我试图谷歌但无法找到任何解决方案。

UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 1.0)

UINavigationBar.appearance().barTintColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 1.0)
swift statusbar navigationbar
5个回答
1
投票

尝试将半透明变为虚假

navigationBar.isTranslucent = false

1
投票

您可以将以下函数添加到AppDelegate.swift文件中

func changeStatusBarColor(_ color: UIColor) {
        guard let statusBar = (UIApplication.shared.value(forKey: "statusBarWindow") as AnyObject).value(forKey: "statusBar") as? UIView else {
            return
        }
        statusBar.backgroundColor = color
    }

并使用didFinishLaunchingWithOptions方法,如下所示

self.changeStatusBarColor(UIColor.black) //pass the color you want to set

编辑

您可以在AppDelegate.swift文件中使用共享实例

static let shared = AppDelegate()

之后,每当您设置导航背景颜色时,只需将其传递给changeStatusBarColor方法

使用以下方法设置与导航背景颜色相同

AppDelegate.shared.changeStatusBarColor((self.navigationController?.navigationBar.backgroundColor)!)

0
投票
 self.navigationController?.navigationBar.tintColor = UIColor.blue 
 self.navigationController?.navigationBar.barTintColor = UIColor.blue

我运行xcode 10.1,swift 4.2。希望这可以帮助。


0
投票

self.navigationController.navigationBar.barTintColor = UIColor.yourColor


0
投票

如果要使状态栏颜色与导航栏匹配,则不必设置状态栏颜色。注释掉以下行可以解决我的环境中的这个问题。

Screenshot of the results

// UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 1.0)

UINavigationBar.appearance().barTintColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 1.0)

或者,您可以执行以下操作:

UIApplication.shared.statusBarView?.backgroundColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 0.0)

UINavigationBar.appearance().barTintColor = UIColor(red: 13/225, green: 71/255, blue:161/255, alpha: 0.0)
© www.soinside.com 2019 - 2024. All rights reserved.