先看两张图:
titleView导航栏在iOS10上的视图结构层
titleView导航栏在iOS12.2上的视图结构层
20190220100049.png
对比两者明显发现titleView在导航栏上的层级不同,iOS10上直接是添加在UINavigationBar,在iOS12上则多了个UINavigationBarContentView,titleView添加在这个上面了。
导致的问题:
在iOS10上设置titleView的frame后,赋值即可
self.navigationItem.titleView = navTitleView;
但是在iOS12上你会发现布局完全和预期不同,经过查看视图层级,发现在iOS12上titleView报约束错误,这也就是布局达不到预期的原因。
我是这样解决的:
self.navigationItem.titleView = navTitleView;
//赋值后对titleView进行约束
[navTitleView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(nav.superview);
}];
如果哪位大牛有更好的解决方法,请不吝指教。
网友评论