Для тех, кто гуглит это, UIPopoverController
теперь доступно для iPhone и iPad . Вы можете сделать всплывающие окна, которые выглядят одинаково на обоих (на iOS 9, я думаю).
Шаг 1 : включите UIAdaptivePresentationControllerDelegate
и UIPopoverPresentationControllerDelegate
в определение вашего класса
Шаг 2: Переопределите презентацию где-нибудь в вашем классе следующим образом:
func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
return .none
}
Шаг 3: Когда вы представляете контроллер представления, вы говорите ему использовать стиль popover
. Примерно так:
//I pull my popover from a separate storyboard, but any modal view will do
let storyboard = UIStoryboard(name: "Popovers", bundle: nil)
let modal = storyboard.instantiateViewController(withIdentifier: "AnyPickerModal") as! AnyPickerVC
modal.modalPresentationStyle = UIModalPresentationStyle.popover
let pc = modal.popoverPresentationController
pc?.permittedArrowDirections = .any
pc?.sourceView = <your button or view you tap to show the popover>
pc?.sourceRect = <your button or view>.bounds
//How big the popover should be
modal.preferredContentSize = CGSize(width: 300, height: 180)
pc?.delegate = self
self.present(modal, animated: true, completion: nil)
Представленный вами модал будет отображаться как поповер на на iPhone и iPad. Прикреплен скриншот из моего приложения для iPhone.
![enter image description here](https://i.stack.imgur.com/pfhFe.png)
Удачного кодирования!