导航(和状态)栏颜色与已编程的颜色不同(alpha自动设置为0.85)

时间:2019-01-31 12:51:35

标签: ios swift uikit

目标

我正在尝试将导航栏着色为灰色(RGB 33、33、33)。问题是,使用颜色时,我总是得到浅得多的颜色:

UIColor(red: 33/256, green: 33/256, blue: 33/256, alpha: 1)

问题

所以我必须将颜色加深到RGB 8,8,8才能正常工作(使用数字色度计进行验证:获得我想要的(33,33,33)灰色)。

代码

我用于执行此操作的代码如下:

    //  NAV BAR
    let navigationBarAppearace =  UINavigationBar.appearance()
    navigationBarAppearace.tintColor = UIColor.white
    navigationBarAppearace.barTintColor = UIColor(red: 0.03, green: 0.03, blue:0.03, alpha: 1)
    navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

    //  STATUS BAR APPEARANCE
    UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent

我发现的东西

我使用Xcode调试视图层次结构进行了调查,右键单击导航栏并按“打印描述”

enter image description here

得到这个:

<_UIVisualEffectSubview: 0x15422d1c0; frame = (0 0; 375 64); alpha = 0.85; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x1d4224c60>>

无论在“界面生成器”中还是在代码中的任何位置,均已将alpha设置为0.85(即使我从未明确将其设置为该值)。

如果我想用导航栏相同的颜色给其他视图着色,请使用:

UIColor(red: 0.03, green: 0.03, blue: 0.03, alpha: 0.85) 相当于 UIColor(red: 8/256, green: 8/256, blue: 8/256, alpha: 0.85)

(相同的RGB,alpha为0.85)

问题

如何删除导航栏上的0.85 alpha以在整个应用程序中使用相同的颜色值?

1 个答案:

答案 0 :(得分:1)

只需编写以下代码

navigationController.navigationBar.isTranslucent = false