2017-06-12 3 views
0

Ich versuche, ein Popover über ein Bild zu zeigen und versuche nicht, den Ankerpunkt auf meinen Bildrand zu richten (das Bild ist das Info-Icon). Hier ist mein Code:Swift Popover Anchor

Die Schaltfläche Aktion:

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

Und die Vorbereitung für segue:

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) 

    } 
} 

Hier ein paar Screenshots: Main View Popover shown

Das Beste, was ich bekam, war die Koordinaten manuell einstellen, aber es passt nicht weder jeden Bildschirmtyp ...

+0

Versuchen Sie, 'sourceView' auf' infoIcon' zu setzen? – Sweeper

Antwort

0

Ich würde es dies ändern:

Sie sicher sein können
vctr.popoverPresentationController?.sourceView = infoIcon.superview 
vctr.popoverPresentationController?.sourceRect = infoIcon.frame 

auf diese Weise, dass Sie benutzen die Übersicht der InfoIcon und der Rahmen wird in der richtigen Position sein.

+0

Arbeitete wie ein Charme! Vielen Dank! – gmoraleda

Verwandte Themen