У меня есть 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
.Теперь я ожидаю, что стрелка всплывающего окна укажет на центр этого элемента.Но это не так:
Глядя на иерархию представлений (ниже), мое изображение горизонтально центрировано в кнопке прямоугольной панели.Это совсем не на левой стороне, что объясняет смещение стрелы поповера.
Любые идеи, что мне здесь не хватает, или как этоможно исправить?