Как использовать поповер контроллер в iPhone
Я не мог показать поповер контроллер как поповер в iPhone, в то время как он отлично работает с iPad.
Любые идеи о том, как сделать это в iPhone.
Насколько я искал, я не мог найти ни одного.
В любом случае, сделать так, чтобы поповер появился в iphone, как и в iPad!
1 ответ
Решение
Установите себя в качестве делегата контроллера представления popover перед его представлением и реализуйте метод делегата 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
}
}