首页 > 解决方案 > 动画 UIImageView 高度约束空白

问题描述

我正在尝试实现某种“视差”效果。

假设我在屏幕顶部有一个图像,高度:180 和它下面的滚动视图。

初始状态为:

状态初始

当我向上滚动超过 32 像素时,图像应该“停靠”起来,比如将他的高度设置为 45 像素,并进行动画处理。

最终状态应该是:

州决赛

在 scrollViewDidEndDragging 中,我想将图像停靠起来,动画。我使用了以下代码:

self.imageConstraint?.constant = 45.0

UIView.animate(withDuration: 1.0,
               delay: 0,
               options: [.beginFromCurrentState,
                         .allowAnimatedContent,
                         .allowUserInteraction],
               animations: {
                self.superview?.layoutIfNeeded()
}, completion: { _ in
    completion()
})

问题是图像设置为 45 高度,但只有图像,并且保留了一个空白空间(初始高度-最终高度)并且该空间是动画的。基本上,没有减速,当 scrollDidEndDragging 我想为图像的高度设置动画时,这不能按预期工作。

看起来像这样:

动画期间

我做错了什么?

标签: iosswiftanimationimageviewconstraints

解决方案


以这种方式编写你的代码,它会很有希望地工作,

UIView.animate(withDuration: 0.5)
{
    self. self.imageConstraint.constant = 45.0
    self.view.layoutIfNeeded();
}

如果没有,请让我。谢谢


推荐阅读