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

标签 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 调试 View 层次结构进行了调查,右键单击导航栏并按“打印描述”

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(即使我从未明确将其设置为该值),无论是在界面构建器中还是代码中的任何地方。

如果我想用与导航栏相同的颜色为任何其他 View 着色,我使用:

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 以在整个应用中使用相同的颜色值?

最佳答案

只写下面的代码

navigationController.navigationBar.isTranslucent = false

关于ios - 导航(和状态)栏颜色与编程不同(alpha 自动设置为 0.85),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54461048/

相关文章:

ios - 如何获取 nil 的默认值

ios - 未调用 URLSessionDelegate 函数

ios - UICollectionView 在刷新时重复和重新排序单元格内容

swift - 以编程方式创建的具有大标题的 UINavigationController 属于 UIStatusBar

iphone - 尝试使用对象初始化 NSArray 时出错?

ios - Swift:从通知中获取 fireate 时应用程序崩溃

ios - 如何让后退按钮始终转到上一个 View Controller

objective-c - iOS 5 中的 Offscreen UITextView 不可见/明文

uikit - iOS 7 色调颜色 - UINavigationItem 的 backBarButtonItem 在 initWithImage : 时不着色

ios - 无法从我声明它的 'if' block 之后返回变量