在 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 中访问孩子时,父母的导航栏变亮的主要内容,如果未能解决你的问题,请参考以下文章

XPath:如何从一个孩子导航到同一个父母的另一个孩子

push 时导航栏变灰一下

如何从子类访问父类数据成员,当父母和孩子的日成员具有相同的名称时

发送到后台后,导航和标签栏变暗的应用

无法在角度 6 中访问从父母到孩子的方法

如何从孩子的父母访问模板引用变量?