2017-04-06 2 views
2

iOS 10, Swift 3,1Animieren von Auto-Layout Einschränkungen nicht funktioniert

Ich habe einen UIView genannt graphPopup in einem UITableViewCell, die ich zu animieren bin versucht. Wenn jemand auf ein Diagramm tippt, erscheint ein Popup und ich möchte, dass es seine x und y an Ort und Stelle animiert.

Alles funktioniert außer der Animation des Popup. Hier ist, wie es jetzt aussieht: enter image description here

ich das Popup zu Dia von Punkt-zu-Punkt in der richtigen Position will. Hier ist mein Code:

class TotalCell: UITableViewCell, ChartViewDelegate{ 

    @IBOutlet weak var graphPopup: UIView! 
    @IBOutlet weak var popupConstraintY: NSLayoutConstraint! 
    @IBOutlet weak var popupConstraintX: NSLayoutConstraint! 

    func chartValueSelected(_ chartView: ChartViewBase, entry: ChartDataEntry, highlight: Highlight) { 
    //... 
    graphPopup.isHidden = false 

    //Set new auto layout constraints 
    self.popupConstraintX.constant = highlight.xPx-44 
    self.popupConstraintY.constant = highlight.yPx+18 

    //Animate (which does nothing) 
    UIView.animate(withDuration: 1.0, animations: { 
     self.graphPopup.layoutIfNeeded() 
    }) 
    } 
} 

Irgendeine Idee, was ich falsch machen könnte? Wenn ich das Animationsbit vollständig entferne, verhält es sich genauso, aber ich weiß, dass die Animation aufgerufen wird.

Irgendwelche Ideen?

+1

Zwei Fragen - haben Sie versucht, 'layoutIfNeeded()' auf 'self' zu verwenden, anstatt' graphPopup'? Und zweitens - wo versteckst du das Popup? Haben Sie versucht, es ständig sichtbar zu halten? Es wäre seltsam, aber vielleicht passiert die Animation, wenn sie nicht sichtbar ist? – Losiowaty

Antwort

5

Versuchen Sie self.layoutIfNeeded() anstelle von self.graphPopup.layoutIfNeeded().

Verwandte Themen