UIBarButtonItem 在 < iOS 11 上的位置不正确

UIBarButtonItem position incorrect on < iOS 11

在 iOS 10 及以下,我的栏按钮在导航栏中的位置不正确。可能是什么原因造成的?

这是设置按钮的函数:

func setBarButton(image: UIImage?, position: BarButtonPosition, target: AnyObject, selector: Selector) -> Void {
  let barButton = UIBarButtonItem(title: "", style: .plain, target: target, action: selector)
  barButton.image = image

  if position == .left {
    navigationItem.leftBarButtonItem = barButton
    navigationItem.leftBarButtonItem?.tintColor = UIColor.zbPrimary
  } else {
    navigationItem.rightBarButtonItem = barButton
    navigationItem.rightBarButtonItem?.tintColor = UIColor.zbPrimary
  }
}

以及我在 viewDidLoad 中调用函数的位置:

setBarButton(image: #imageLiteral(resourceName: "settings-icon"), position: .right, target: self, selector: #selector(openSettings))

这只发生在 UIBarButtonItem 正在设置图像的情况下,而不是那些只有标题或自定义视图的图像

您的问题标题具有误导性,但在阅读您的问题后我意识到这与我在我的一个项目中遇到的问题相同。 我正在通过代码设置 barButtonItem 标题,当我将其更改为:

  • navigationItem.leftBarButtonItem?.title = ""

收件人:

  • navigationItem.leftBarButtonItem?.title = nil

问题消失了。 我几乎浪费了一整天的时间来解决这个问题。 我希望这能解决你的问题。