在iOS 11上没有获取navigationItem的自定义titleView

我正在使用自定义titleView并将其分配给navigationItem titleView。 在iOS 11之前它一直运行良好。由于更新它的位置错位到中心,因为它原来是在更左边。 除此之外,用户交互无效。

titleView = Bundle.main.loadNibNamed("SomeNib", owner: self, options: nil)?.first as? SomeNib navigationItem.titleView = titleView 

titleView只是一个通常的笔尖。

然后启用互动:

 if let titleView = self.navigationItem.titleView { let tap = UITapGestureRecognizer(target: self, action: #selector(onTitleViewTap)) titleView.addGestureRecognizer(tap) titleView.isUserInteractionEnabled = true } 

在iOS 11中,titleView与Autolayout一起设置。 因此,titleView的大小是您在titleView中设置的视图的固有大小。

视图类中的此代码(您将其设置为titleView)应该有助于:

 override var intrinsicContentSize: CGSize { return UILayoutFittingExpandedSize }