2011-08-08 66 views
1

是否有類似於iOS應用的NSPopover?它出現在Mac的對象庫中,但不適用於iPhone和iPad,儘管我已經使用此(或至少某些非常相似的)功能下載了應用程序。NSPopover for iOS

所以我的問題:是否有一個合法的方式來實現呢?

回答

3

UIPopoverController是你在找什麼。

+0

請記住,UIPopoverController只有iPad! –

+0

所以我必須以編程方式創建_popover_,對嗎? –

2

UIPopOverController,但它的使用僅限於ipad公司:

酥料餅的控制器使用專門的iPad設備。試圖在其他設備上創建一個會導致異常。

source

爲iPhone/iPod touch上,你可以使用一個外部框架,像WEPopOver

0

對於谷歌搜索這個的緣故,UIPopoverController現在可用於iPhone和iPad。你可以使兩個看起來都一樣的popovers(我相信iOS 9)。

步驟1:在你的類定義包含UIAdaptivePresentationControllerDelegateUIPopoverPresentationControllerDelegate

第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

編碼愉快!