I've decided to switch to constraints and face up with animation problems. In autoresizing mask
world everything works fine. UIView
is attached to right top. Content inside use autoresizing mask
.
Animate code:
UIView.animate(withDuration: 0.3, delay: 0, options: [.curveEaseInOut]) {
self.constraints.first(where: {$0.firstAttribute == .height})?.constant = dstSize.height
self.constraints.first(where: {$0.firstAttribute == .width})?.constant = dstSize.width
self.setNeedsLayout()
self.layoutIfNeeded()
}
CodePudding user response:
A few things:
- It's good practice to make properties for the constraints you want to update later;
- Only the
layoutIfNeeded
call have to be inside an animation block; - It looks like
setNeedsLayout
is unnecessary. Have you tried to remove it?
CodePudding user response:
You need to move constraint's change outside the animation block
self.constraints.first(where: {$0.firstAttribute == .height})?.constant = dstSize.height
self.constraints.first(where: {$0.firstAttribute == .width})?.constant = dstSize.width
UIView.animate(withDuration: 0.5, delay: 0, options: [.curveEaseInOut]) {
self.superView!.layoutIfNeeded()
}