2017-06-12 85 views
0

我試圖在圖像上顯示一個彈出窗口,我試圖將錨點指向我的圖像邊框(圖像是信息圖標)。 這裏是我的代碼:Swift Popover Anchor

中的按鈕操作:

@IBAction func infoTapped(_ sender: AnyObject) { 
     self.performSegue(withIdentifier: "InfoPopOver", sender: nil) 
    } 

而對於賽格瑞的準備:

extension AddExpenseViewController: UIPopoverPresentationControllerDelegate { 
    func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { 
     return UIModalPresentationStyle.none 
    } 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "InfoPopOver" { 
      if let vctr = segue.destination as? MyPopOverViewController { 
       vctr.modalPresentationStyle = .popover 
       vctr.popoverPresentationController?.delegate = self 
       vctr.popoverPresentationController?.sourceView = self.view 
       vctr.popoverPresentationController?.sourceRect = infoIcon.frame 

      } 
     } 
    } 

} 

class MyPopOverViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.preferredContentSize = CGSize(width: 185, height: 80) 

    } 
} 

以下幾個截圖: Main View Popover shown

我是手動設置的座標,但它並不適合每一個都不屏幕類型...

+0

嘗試將'sourceView'設置爲'infoIcon'? – Sweeper

回答

0

我會把它改成這樣最好:

vctr.popoverPresentationController?.sourceView = infoIcon.superview 
vctr.popoverPresentationController?.sourceRect = infoIcon.frame 

這樣,你可以肯定的是您正在使用infoIcon的超級視圖,並且框架將處於正確的位置。

+0

工作就像一個魅力!謝謝! – gmoraleda