导航栏TitleView在iOS11上不显示

12/10/2019 iOS11 issue

[TOC]

# 导航栏TitleView在iOS11上不显示

今天遇到一个奇怪的问题,xib上有一个view,然后在.m内指定其为titleView,发现没出来,经过检测,发现其宽度为1

代码为:

// self.vNavigationTitle 为 xib上的一个顶级view,其属性设置为strong

//在.m文件内将其赋值给 titleView
self.navigationItem.titleView = self.vNavigationTitle;

经过查查资料,发现

在iOS 11 中苹果改变了UINavigationBar的视图层级,titleView不是加到NavigationBar上,而是加到了UINavigationBarContentView上,这就是原因所在。

也就是说需要布局都是通过constraint来控制,所以需要自建一个view,然后指定其 intrinsicContentSize,然后就能愉快的正常显示了。

//实现view的 intrinsicContentSize
@interface BarView : UIView
@end
@implementation BarView
-(CGSize)intrinsicContentSize{
    return UILayoutFittingExpandedSize;
}
@end


Last Updated: 8/14/2020, 8:17:04 PM