在 Swift 3 中访问孩子时,父母的导航栏变亮
Posted
技术标签:
【中文标题】在 Swift 3 中访问孩子时,父母的导航栏变亮【英文标题】:Navigation bar of parent becomes lighter when child is visited in Swift 3 【发布时间】:2016-12-02 22:14:13 【问题描述】:在子视图控制器中,我们正在更改viewWillAppear
上的导航栏色调颜色,然后,为了确保恢复父视图控制器的导航栏色调颜色,我们在子视图中将其颜色设置为willMove
控制器。
override func viewWillAppear(_ animated: Bool)
self.navigationController?.navigationBar.barTintColor = .black
override func willMove(toParentViewController parent: UIViewController?)
self.navigationController?.navigationBar.barTintColor = UIColor(red: 30, green: 30, blue: 30)
颜色没有正确改变。这是互动:
访问父控制器,颜色正确为灰色 访问子控制器,(触发viewWillAppear
)颜色是正确的黑色
返回父控制器,(触发willMove
)颜色比预期的深灰色
当您从子控制器返回到父控制器时,颜色比实际设置的 RGB 值要浅。
故事板中设置了相同的 RGB 值,并在访问子视图之前在父视图的初始加载时显示。
【问题讨论】:
查看此帖子***.com/questions/39835420/…,我还建议您将willMove
代码移至viewWillDisappear
并尝试?
如果您的所有代码都在视图控制器中,我会根据您的需要将内容放在 viewWillAppear() 或 viewWillLayoutSubviews() 中。似乎更主动地做事。
【参考方案1】:
如果您使用的是 Xcode 8 和 ios 10,则在颜色选择器中选择颜色时默认颜色空间应为 sRGB。
更多信息请看这里:Apple doc
【讨论】:
以上是关于在 Swift 3 中访问孩子时,父母的导航栏变亮的主要内容,如果未能解决你的问题,请参考以下文章