Всплывающая стрелка смещена от центра при настройке UIPopoverPresentationController's barButtonItem - PullRequest
0 голосов
/ 20 октября 2018

У меня есть 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.Теперь я ожидаю, что стрелка всплывающего окна укажет на центр этого элемента.Но это не так:

Arrow is right from center

Глядя на иерархию представлений (ниже), мое изображение горизонтально центрировано в кнопке прямоугольной панели.Это совсем не на левой стороне, что объясняет смещение стрелы поповера.

View Hierarchy

Любые идеи, что мне здесь не хватает, или как этоможно исправить?

...