目标
我正在尝试将我的导航栏着色为灰色(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
Run Code Online (Sandbox Code Playgroud)
我发现了什么
我已经使用 Xcode 调试视图层次结构进行了调查,右键单击导航栏并按“打印描述”
得到这个:
<_UIVisualEffectSubview: 0x15422d1c0; frame = (0 0; 375 64); alpha = 0.85; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x1d4224c60>>
这意味着 alpha 已经设置为 0.85(即使我从未明确将其设置为该值),无论是在 Interface builder 中还是在代码中的任何地方。
如果我想用与导航栏相同的颜色为任何其他视图着色,我使用:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |