2017-06-12 81 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