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

标签 ios swift uinavigationcontroller uinavigationbar

在 viewwillAppear 上,我正在更改导航栏背景颜色。我正在尝试设置一个带有框架(0,53,宽度,高度)的 View 。第一次,它显示正确,并且在导航栏高度之后花费了 53,但是当我更改主题并来到该 Controller 时,它从 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)
}

请指教。

提前致谢。

最佳答案

当您更改 backgroundColor 属性时,您会调用 layoutSubviews 并最终导致所有内容再次布局。如果您以编程方式设置 View 框架,则应该在 View 的 layoutSubviewsviewController

viewWillLayoutSubviews 中执行此操作

关于ios - 更改导航栏背景颜色后,self.view 的 y 位置发生更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53282589/

相关文章:

ios - 如何知道该用户的哪些Facebook friend 已安装我的应用程序?

android - 将视频流式传输到 iOS、Android 应用程序的相同技术

iphone - CLLocationManager - iPhone 应用程序中的自定义位置管理器

swift - Xcode 捆绑路径

ios - UIWebview:WebThread EXC_BAD_ACCESS

ios - 当我不拥有委托(delegate)时,如何检测与 UIPickerView 的交互

string - Swift nil 可选字符串 = 空字符串

iOS-swift 导航 Controller 样式不正确

swift - 自定义 UINavigationController Segue Swift

ios - 带有图像的自定义后退按钮