как использовать поповер контроллер в iPhone - PullRequest
0 голосов
/ 19 мая 2018

Я не мог показать контроллер поповер в качестве поповера в iPhone, хотя он очень хорошо работает с iPad.

Любые идеи о том, как это сделать в iPhone.

Насколько я искалЯ не смог найти ни одного.

, чтобы всплывающее окно появилось в iphone, как и в iPad, ценится!

1 Ответ

0 голосов
/ 19 мая 2018

Установите себя в качестве делегата контроллера всплывающего окна до того, как представит его, и реализуйте метод делегата adaptivePresentationStyle(for:traitCollection:) для возврата .none.Это приведет к тому, что поповер перестанет адаптироваться на iPhone в качестве полноэкранного контроллера представления и превратится в настоящий поповер, как на iPad.

Это полный рабочий пример, который представляет поповер в ответ на нажатие кнопки:

class ViewController: UIViewController {
    @IBAction func doButton(_ sender: Any) {
        let vc = MyPopoverViewController()
        vc.preferredContentSize = CGSize(400,500)
        vc.modalPresentationStyle = .popover
        if let pres = vc.presentationController {
            pres.delegate = self
        }
        self.present(vc, animated: true)
        if let pop = vc.popoverPresentationController {
            pop.sourceView = (sender as! UIView)
            pop.sourceRect = (sender as! UIView).bounds
        }
    }
}
extension ViewController : UIPopoverPresentationControllerDelegate {
    func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
        return .none
    }
}
...