Swift Popover Anchor

Я пытаюсь показать всплывающее окно над изображением, но мне не удается навести точку привязки на границу моего изображения (изображение является значком информации). Вот мой код:

Действие кнопки:

@IBAction func infoTapped(_ sender: AnyObject) {
        self.performSegue(withIdentifier: "InfoPopOver", sender: nil)
    }

А то готовиться к переходу

extension AddExpenseViewController: UIPopoverPresentationControllerDelegate {
    func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
        return UIModalPresentationStyle.none
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "InfoPopOver" {
            if let vctr = segue.destination as? MyPopOverViewController {
                vctr.modalPresentationStyle = .popover
                vctr.popoverPresentationController?.delegate = self
                vctr.popoverPresentationController?.sourceView = self.view
                vctr.popoverPresentationController?.sourceRect = infoIcon.frame

            }
        }
    }

}

class MyPopOverViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        self.preferredContentSize = CGSize(width: 185, height: 80)

    }
}

Вот пара скриншотов: Main View Popover показан

Лучшее, что я получил, это установил координаты вручную, но это не подходит ни для каждого типа экрана...

1 ответ

Решение

Я бы изменил это на это:

vctr.popoverPresentationController?.sourceView = infoIcon.superview
vctr.popoverPresentationController?.sourceRect = infoIcon.frame

Таким образом, вы можете быть уверены, что используете суперпредставление infoIcon, и фрейм будет в правильном положении.

Другие вопросы по тегам