2017-07-07 4 views
1

Ich mache eine Tabellenansicht mit einer Schaltfläche in jeder Zelle, wenn Sie auf die Schaltfläche drücken, zeigt ein Popover, aber das Problem ist ein Popover zu zentrieren über die Tabellenansicht, aber wenn Sie die Tabelle hinunter und drücken Sie die Taste das Popover verwendet als Richtlinie den Auswahlknopf, damit das Popover nach oben geht. Auf den nächsten Bildern können Sie sehen, was ich versuche zu erklären.Wie Center-Popover auf TableView?

enter image description here

Der Code verwendet, wenn Sie die Taste aus der Zelle drücken:

func buttonPressed(sender: UIButton){ 

    let buttonTag = sender.tag 

    let width = self.view.frame.midX + (self.view.frame.midX/2) 

    let height = info[buttonTag].nota.calculateHeight(width: width, sizeFont: 16.0) + 40 

    let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 

    let vc = storyboard.instantiateViewController(withIdentifier: "NotaTable") as! Popever 

    vc.modalPresentationStyle = UIModalPresentationStyle.popover 
    vc.popoverPresentationController?.delegate = self 
    vc.preferredContentSize = CGSize(width: width, height: height + 115) 
    vc.width = width 

    let popover: UIPopoverPresentationController = vc.popoverPresentationController! 
    popover.delegate = self 
    popover.sourceView = self.view 

    popover.sourceRect = CGRect(x: self.view.frame.midX - (width/2), y: self.view.frame.midY - (height/2), width: width, height: height) 

    popover.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0) 

    present(vc, animated: true, completion:nil) 

} 

So, Wie mache ich das popover auf Mitte zu konzentrieren, egal welche Taste drücken?

Vielen Dank!

Antwort

0

finde ich die Art und Weise, dies zu lösen, die popover.sourceRect zu ändern, statt de x vollenden und y-Position mit self.view.frame für self.view.bounds ersetzt

let popover: UIPopoverPresentationController = vc.popoverPresentationController! 
    popover.delegate = self 
    popover.sourceView = self.view 

    popover.sourceRect = CGRect(x: (self.view.bounds.midX - (width/2)), y: (self.view.bounds.midY - (height/2)), width: width, height: height) 

Here I verlassen Sie den Unterschied zwischen Rahmen und Grenzen:

Die Grenzen einer UIView ist das Rechteck, ausgedrückt als Ort (x, y) und Größe (Breite, Höhe) relativ zu seinem eigenen Koordinatensystem (0,0).

Der Rahmen eines UIView ist das Rechteck, ausgedrückt als Ort (x, y) und Größe (Breite, Höhe) relativ zum Superview, in dem es enthalten ist.

I got it from here

Verwandte Themen