使用 Swift 3 的导航栏背景颜色灯

Posted

技术标签:

【中文标题】使用 Swift 3 的导航栏背景颜色灯【英文标题】:Navigation Bar Background Color Light with Swift 3 【发布时间】:2017-02-24 10:29:17 【问题描述】:

我在任何视图控制器中添加导航栏。但是,我在项目中添加了新的 CollectionView 控制器。我的问题是我无法在集合视图控制器中添加导航栏。 所以我用代码添加导航栏。我在 Attributes Inspector 中选择 Top Bar-"Inferred"。这是代码。

//Add Navigation Bar

    let height: CGFloat = 65
    let navbar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: height))
    navbar.delegate = self
    UINavigationBar.appearance().barTintColor = UIColor(red: 0.0/255.0, green:49.0/255.0, blue:79.0/255.0, alpha:0.1)
    UINavigationBar.appearance().tintColor = UIColor.white
    UINavigationBar.appearance().isTranslucent = true
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]

但是,集合视图控制器中的导航栏背景颜色比其他视图控制器有点暗。 在其他视图控制器中,我拖放导航栏。 - 导航栏样式 --> 黑色 - 半透明 --> 未启用 - 条形颜色 --> #00314F 我不知道为什么集合视图控制器中的导航栏背景颜色比集合视图控制器中的浅。 请帮助我如何在所有视图控制器中匹配导航栏背景颜色。 如果不好做,有什么方法可以在CollectionViewController中添加Navigation Bar,不用嵌入Navigation Controller,不用代码。

【问题讨论】:

【参考方案1】:

这是因为 NavigationBar 的 Translucent 属性。它提供了一种图像颜色看起来褪色的效果,就好像在条上放置了一层一样,因此颜色看起来有点不同。如下图设置导航栏的半透明属性。您可以在任何生命周期方法中编写此代码。

self.navigationController?.navigationBar.isTranslucent = false

【讨论】:

【参考方案2】:

这是因为我认为是半透明的。当导航栏不透明时,视图无法定位在导航栏后面以显示它所拥有的内容。但是当是半透明时,视图会停留在导航栏的后面,并且随着视图的颜色,您会看到它更暗。

【讨论】:

嗨@AtaerCaner,兄弟你有解决这个问题的想法吗?

以上是关于使用 Swift 3 的导航栏背景颜色灯的主要内容,如果未能解决你的问题,请参考以下文章

swift xcode更改状态栏(背景颜色)

在 Swift 中更改导航栏颜色

在 2 个 VC 之间传输时出现导航栏背景颜色问题

如何使用swift3增加导航栏的高度并更改xcode 8中状态栏的颜色?

在 Swift 中更改导航栏颜色

为啥ios中的状态栏和导航栏背景颜色不同