iOS11 自定义titleView点击事件不响应等问题

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;
iOS11 自定义titleView点击事件不响应等问题_第1张图片
WechatIMG62.png

在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的奇葩尺寸)

你可能感兴趣的:(iOS11 自定义titleView点击事件不响应等问题)