我有一个动画,该动画修改了UIView的约束,我需要在对此进行动画处理之后但在动画开始之前知道该UIView的大小...
当用户滚动UITableView时,我更新了黑色UIView的heightConstraint,因此在更新UIView之后需要高度,因为我需要在函数viewDidLayoutSubviews
中固定黄色UIview的高度。
这是我用来制作UIView动画的代码:
self.headerIsCollapsed = true
self.heightProfilView.constant -= (self.view.bounds.height / 5)
UIView.animate(withDuration: 0.3, animations: {
self.view.layoutIfNeeded()
self.imageUserProfil.layer.opacity = 0
})
我需要这里的值:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
heightTopBar.constant = // here i need the height of the UIView after animating this
}
所以,问题是:对此进行动画处理后,如何预先计算UIView的高度?
答案 0 :(得分:0)
只需使用UIView.animate()
的完成块
UIView.animate(withDuration: 0.3, animations: {
self.view.layoutIfNeeded()
self.imageUserProfil.layer.opacity = 0
}) { (finished) in
// get the view's height after animation here
}
除非您将持续时间指定为0,否则在动画序列结束后将执行完成块。
答案 1 :(得分:0)
尝试一下:
self.headerIsCollapsed = true
//create this property at instance level in your viewcontroller class
self.heightBeforeAnimation = self.heightProfileView.frame.size.height
self.heightProfilView.constant -= (self.view.bounds.height / 5)
UIView.animate(withDuration: 0.3, animations: {
self.view.layoutIfNeeded()
self.imageUserProfil.layer.opacity = 0
}){ (isCompleted) in
//create this property at instance level in your viewcontroller class
self.heightAfterAnimation = self.heightProfileView.frame.size.height
}
并调用任何函数,并在对视图设置动画前后使用两个包含height值的变量的值。