1

我创建了一个带有标题和容器的视图...在容器内有一个页面视图控制器

通过 iboutlet 约束基于容器调整标头大小

如果容器中有一个表格视图作为页面,则标题根据滚动偏移量调整大小,没有动画

如果我在页面之间滚动,我希望调整标题的大小,所以我创建了一个委托方法来监听滚动动画的结束,然后调整标题的大小

但是如果我用这段代码动画这个调整大小

UIView.animate(withDuration: 0.5,animations: {
    self.imageViewHeightConstraint.constant = ct
    self.view.layoutIfNeeded()
 }, completion: {
     _ in
     if let handler = handler {
         handler()
     }
})

然后页面在调整大小完成后“重新加载”

这是动画的视频(红色背景是我出于调试原因编辑的页面视图控制器的背景)

错误动画的视频

4

1 回答 1

0

请像这样在动画块外设置常量,

self.imageViewHeightConstraint.constant = ct

UIView.animate(withDuration: 0.5,animations: {
    self.view.layoutIfNeeded()
}, completion: {_ in
    UIView.commitAnimations()
    if let handler = handler {
        handler()
    }
})
于 2017-03-01T12:23:40.997 回答