iOS11中缺少导航栏标题视图

Posted

技术标签:

【中文标题】iOS11中缺少导航栏标题视图【英文标题】:Navigation bar title view missing in iOS11 【发布时间】:2017-09-29 09:26:26 【问题描述】:

我正在为iPad 快速开发一个项目。 在故事板的导航栏标题视图中放置了一个图像视图。 标题视图按预期在ios 10 及以下显示。 当我在 iOS 11 模拟器中运行相同的项目并且物理设备导航栏未显示标题视图时,我们将不胜感激。

【问题讨论】:

任何关于你如何做到这一点的代码将不胜感激。 没有添加标题视图的代码,这是从情节提要中添加的 iOS 11 Navigation TitleView misplaced的可能重复 【参考方案1】:

创建一个自定义视图并覆盖自定义标题视图类中的以下方法以在运行时更新视图框架大小。

Obj-C

-(CGSize)intrinsicContentSize

    [super intrinsicContentSize];
    return UILayoutFittingExpandedSize;

斯威夫特

override var intrinsicContentSize: CGSize 
    return UILayoutFittingExpandedSize

检查并告诉我它是否适合您?

【讨论】:

只需使用层次视图选项进行调试,您就会知道自定义 titleView 的帧大小仅在 ios 11 中为零。要在运行时更新帧大小,您需要调用此方法。 哦是吗?此代码是否显示对 iOS 10 及更低版本的现有行为有任何影响?还是仅适用于 iOS 11? 我希望,对 iOS 10 及更低版本的现有行为没有影响。请检查并告诉我。【参考方案2】:

也许这对你有帮助

let widthConstraint = view.widthAnchor.constraint(equalToConstant: width)
let heightConstraint = view.heightAnchor.constraint(equalToConstant:height)
widthConstraint.isActive = true
heightConstraint.isActive = true

view 是您用作自定义标题视图的视图。 widthheight 是您要使用的大小。您可以使用:

let width = view.frame.width
let height = view.frame.height

【讨论】:

以上是关于iOS11中缺少导航栏标题视图的主要内容,如果未能解决你的问题,请参考以下文章

iOS:为啥不显示导航栏?

视图控制器上缺少导航栏

在导航栏iOS 11安全区域下定位视图

从搜索控制器导航后缺少导航栏

iOS 11、状态栏、导航栏和 UIScrollview

ios7 - 故事板 - 无法在我的视图控制器中设置导航栏