Всплывающая стрелка смещена от центра при настройке UIPopoverPresentationController's barButtonItem
У меня есть UIBarButtonItem
с изображением на моем контроллере навигации:
infoItem = UIBarButtonItem(image: infoImage,
style: .plain,
target: self,
action: #selector(infoAction))
navigationItem.rightBarButtonItem = infoItem
При нажатии я делаю:
@objc func infoAction()
{
let popoverContentController = InfoViewController()
popoverContentController.preferredContentSize = CGSize(width: 300, height: 300)
popoverContentController.modalPresentationStyle = .popover
popoverContentController.popoverPresentationController?.delegate = self
self.present(popoverContentController, animated: true, completion: nil)
}
Это тогда призывает UIPopoverPresentationControllerDelegate
функции:
func prepareForPopoverPresentation(_ popoverPresentationController: UIPopoverPresentationController)
{
popoverPresentationController.permittedArrowDirections = .any
popoverPresentationController.barButtonItem = infoItem <<=====
}
func adaptivePresentationStyle(for controller: UIPresentationController,
traitCollection: UITraitCollection) -> UIModalPresentationStyle
{
return .none
}
Там <<=====
Я установил barButtonItem
, Теперь я ожидаю, что стрелка всплывающего окна укажет на центр этого элемента. Но это не так:
Глядя на иерархию представлений (ниже), мое изображение горизонтально отцентрировано в кнопке прямоугольной панели. Это совсем не на левой стороне, что объясняет смещение стрелки поповер.
Есть идеи, что мне здесь не хватает, или как это можно исправить?