titleView添加自定义View 由两个button组成 然后btn的事件不响应
NavButtonsView *btnsTitleView = [[NSBundle mainBundle] loadNibNamed:@"NavButtonsView" owner:nil options:nil].firstObject;
btnsTitleView.frame = CGRectMake(0, 0, 200, 30);
btnsTitleView.leftText = @"好友动态";
btnsTitleView.rightText = @"圈子动态";
self.navigationItem.titleView = btnsTitleView;
在iOS10及之前都是无影响 更新了xcode9 iOS11 就不好使了
解决办法
NavButtonsView.h
@property(nonatomic, assign) CGSize intrinsicContentSize; //重写 intrinsicContentSize 属性
在viewController.m里面
self.navigationItem.titleView = btnsTitleView; 之前加入下面的代码:
btnsTitleView.intrinsicContentSize = CGSizeMake(200, 30);
Intrinsic Contenet Size – Intrinsic Content Size:固有大小。顾名思义,在AutoLayout中,它作为UIView的属性(不是语法上的属性),意思就是说我知道自己的大小,如果你没有为我指定大小,我就按照这个大小来。 比如:大家都知道在使用AutoLayout的时候,UILabel是不用指定尺寸大小的,只需指定位置即可,就是因为,只要确定了文字内容,字体等信息,它自己就能计算出大小来。
iOS11导航栏titleView图层有变化.
iOS 10及以下 自定义titleView会添加在navigationBar上
iOS 11 添加在UINavigationBarContentView上.
【友情链接】:App界面适配iOS11(包括iPhoneX的奇葩尺寸)