适用于iOS的NSPopover

是否有类似于iOS应用程序的NSPopover? 它出现在Mac的对象库中,但不适用于iPhone和iPad,尽pipe我已经下载了使用这个(或至less一些非常相似)function的应用程序。

所以我的问题: 是否有一个合法的方式来实现呢?

UIPopoverController是你在找什么。

UIPopOverController ,但它的使用仅限于iPad:

Popover控制器专门用于iPad设备。 试图在其他设备上创build一个会导致exception。

( 来源 )

对于iPhone / iPod touch,您可以使用外部框架,如WEPopOver 。

有他们被称为UIPopovers,

下面是教程: http : //www.youtube.com/watch?v = 1iykxemuxbk

为了这些谷歌search, UIPopoverController 现在可用于iPhone和iPad 。 你可以使两个看起来相同的popovers(我相信iOS 9的)。

第1步 :在您的类定义中包含UIAdaptivePresentationControllerDelegateUIPopoverPresentationControllerDelegate

第2步:在你的class级的某个地方重写演示文稿,如下所示:

 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上的popup窗口。 附件是我的iPhone应用程序的屏幕截图。

在这里输入图像说明

快乐的编码!