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

时间:2018-11-13 13:54:12

标签: ios swift uinavigationcontroller uinavigationbar

在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 个答案:

答案 0 :(得分:0)

更改backgroundColor属性后,您将调用layoutSubviews,并最终使所有内容重新布局。如果您以编程方式设置了视图框架,则应在视图的layoutSubviewsviewWillLayoutSubviews的{​​{1}}中进行设置