更改导航栏背景颜色后,self.view 的 y 位置发生更改

Posted

技术标签:

【中文标题】更改导航栏背景颜色后,self.view 的 y 位置发生更改【英文标题】:After changing navigationbar background color , y position of self.view is changed 【发布时间】:2018-11-13 13:54:12 【问题描述】:

在 viewwillAppear 上,我正在更改导航栏的背景颜色。我正在尝试使用框架(0,53,宽度,高度)设置视图。在第一次运行时,它显示正确,并且在导航栏的高度之后占用了 53,但是当我更改主题并来到该控制器时,它从 0 占用了 53。所以它隐藏在导航栏后面。

我正在 viewwillappear 中编写以下代码。

if(oldTheme)

self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:"bar.png"), for: .default)

else 
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:"bar2.png"), for: .default)

请指教。

提前致谢。

【问题讨论】:

【参考方案1】:

当您更改backgroundColor 属性时,您调用layoutSubviews 并最终导致一切重新布局。如果您以编程方式设置视图框架,您应该在视图的layoutSubviewsviewControllerviewWillLayoutSubviews 中执行此操作

【讨论】:

以上是关于更改导航栏背景颜色后,self.view 的 y 位置发生更改的主要内容,如果未能解决你的问题,请参考以下文章

滚动后更改导航栏颜色?

更改状态栏的背景颜色

如何更改导航栏的默认背景颜色? [复制]

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

SwiftUI 更改内联 navigationBarTitleDisplayMode 的导航栏背景颜色

我想更改 Bootstrap 导航栏的背景颜色。 [复制]