So I have some function with animation:
func animateScan() {
topConstraint.constant = frame.height
UIView.animate(withDuration: 2.5) {
self.superview?.layoutIfNeeded()
}
}
I call animateScan() in my ViewController on button tap as a sync functions. So after this function I call another function to present another ViewController. In animateScan() I have animation with 2.5 duration, but UIView.animate, as I understand Is async function, so when I call it I just setup animation, and animateScan() finishes without waiting this 2.5sec.
So my question is, can I somehow force animateScan() function to wait this 2.5 animation? Can I make UIVIew.animate to be synchronous?
P.S. I don't want to use completion closure in UIview.animate.
You can wrap your method up as an
asyncmethod:Now when you call
animateScan()by sayingawaitin anasynccontext, your code will magically pause and wait for completion before resuming.