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, и фрейм будет в правильном положении.