动画 UIImageView 高度约束空白

Posted

技术标签:

【中文标题】动画 UIImageView 高度约束空白【英文标题】:Animating UIImageView height constraint white space 【发布时间】:2018-07-13 12:48:17 【问题描述】:

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

假设我在屏幕顶部有一张图片,高度为:180,下面有一个滚动视图。

初始状态为:

state initial

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

最终状态应该是:

state final

在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 我想为图像的高度设置动画时,这不能按预期工作。

看起来像这样:

during animation

我做错了什么?

【问题讨论】:

【参考方案1】:

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

UIView.animate(withDuration: 0.5)

    self. self.imageConstraint.constant = 45.0
    self.view.layoutIfNeeded();

如果没有,请让我。谢谢

【讨论】:

同样的事情,没有变化 请检查您的约束。您是否使用了正确的约束? 如果是这种情况,那么您应该使用 ScrollViewDelegate 并在滚动时更改图像约束。这是一个很棒的技巧 No .. Main View -> 1.Safe Area, 2.Scroll View, 3.ImageView @Najam 我试过这个,但我需要在拖拽结束时停靠 朋友,你得先把view的顺序改一下,改成1-Safe Area, 2-ImageView, 3- ScrollView 只是调试用的,做完再告诉我

以上是关于动画 UIImageView 高度约束空白的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView中UIImage上下空白高度

AutoLayout 约束动画从错误的点缩放

UIImageView 高度不是自动布局约束后子图像高度的高度。

带约束的 UIImageView 的 iOS 动画

使用约束的 UIImageView 的折叠和展开动画

约束 UIImageView 高度以尊重 UITableViewCell 中的动态 UILabel 高度