I'm attempting to update a UIView
's position using animateWithDuration
. When the animation starts occurring, the UIView
begins updating, but then the completion makes it jump to the correct position. This is telling me that the setting of the UIView
's frame is not getting set correctly, but I'm not seeing why. Here is the code:
func showInfoView() {
infoView.hidden = false
let newPosition = self.view.frame.height - (self.infoView.frame.height + 260)
UIView.animateWithDuration(2.0, animations: {
// Set the view to have the new y position
self.infoView.frame.origin.y = newPosition
}, completion: { finished in
// Remove previous constraint
if (self.hintConstraint != nil) {
self.view.removeConstraint(self.hintConstraint)
}
// Create the new constraint
self.hintConstraint = NSLayoutConstraint(item: self.infoView, attribute: .Top, relatedBy: .Equal, toItem: self.view, attribute: .Top, multiplier: 1, constant: newPosition)
self.view.addConstraint(self.hintConstraint)
})
}
Could anyone help me understand why the y position is not getting set properly within the code?