iOS11 navigationItem.titleView 适配问题

认真起来
  • 92

clipboard.png

navigationItem.titleView = 自定义view,
宽度200.在iOS10 及之前是OK的,
xcode9+iOS11,就出现了图一所示问题,
看UI结构发现宽度只有一点点,
不知道是哪里出的问题,
是iOS11出了什么新的东西导致的么?

请问这个问题该怎么解决呢?

问题补充:刚刚发现在iOS11 navigationItem.titleView = 自定义view,
自定义view里有个button,点击事件不触发了.在iOS10上是好的

回复
阅读 24.7k
10 个回答
✓ 已被采纳

在iOS11 自定义titleview里有个button,点击事件不触发了.的解决办法如下:
1:在自定义titleview 里重写 intrinsicContentSize 属性,代码如下:

@property(nonatomic, assign) CGSize intrinsicContentSize;

2:然后在 self.navigationItem.titleView = _titleView; 之前加入下面的代码:

_titleView.intrinsicContentSize = CGSizeMake(200, 40);

CGSizeMake(200, 40); 宽高 自己根据实际情况自己设置具体值就可以了。这样titleview 里的button 应该就可以点击了。

苹果想让你使用 AutoLayout 机制,所以这里你需要设置:

customView.translatesAutoresizingMaskIntoConstraints = false
KeKe
  • 2
新手上路,请多包涵

重写intrinsicContentSize方法

- (CGSize)intrinsicContentSize
{
    return CGSizeMake(200, 44);
}

iOS11导航栏titleView图层有变化.
iOS 10及以下 自定义titleView会添加在navigationBar
iOS 11 添加在UINavigationBarContentView上.
iOS11适配

我在present 之后在进行push navigationBar 上啥都没有了, 就算XIB拖一个出来也一样。 我崩溃了

请问我的titleView里不是button而是手势 也是iOS11不能响应点击事件,iOS10可以 请问怎么修改?

GovernLu
  • 1
新手上路,请多包涵

用自动布局设置宽高就可以了

iOS11之前默认不开启自动布局,iOS11之后模块打开了,所以原来用frame做的自定义view,需要实现intrinsicContentSize方法。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏