动画后的uiview的计算高度

时间:2018-07-05 08:09:29

标签: ios iphone swift xcode

我有一个动画,该动画修改了UIView的约束,我需要在对此进行动画处理之后但在动画开始之前知道该UIView的大小...

storyboard

当用户滚动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的高度?

2 个答案:

答案 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值的变量的值。