使用自动布局时 UIImageView 没有动画

Posted

技术标签:

【中文标题】使用自动布局时 UIImageView 没有动画【英文标题】:UIImageView doesn't animate when using Auto Layout 【发布时间】:2016-11-06 13:01:44 【问题描述】:

我的图片有以下限制:

领先 = 0 尾随 = 0 顶部 = 75 身高 = 250

我希望我的图像从屏幕右侧开始并移动到设置约束的初始位置。

这是我的代码:

imageLeadingConstraint.constant = 100
imageTrailingConstraint.constant = -100
imageTopConstraint.constant = 100
image.layoutIfNeeded()

UIView.animate(withDuration: 1.0) 
    self.imageLeadingConstraint.constant = 0
    self.imageTrailingConstraint.constant = 0
    self.imageTopConstraint.constant = 75
    self.image.layoutIfNeeded()

问题是图像正在移动到初始位置,但没有使用动画。 我的代码对吗?为什么图像只是出现在新位置而不是动画?

【问题讨论】:

【参考方案1】:

您应该为 imageView 的超级视图调用 layoutIfNeeded

self.image.superview.layoutIfNeeded()

【讨论】:

用户已将此问题标记为基于 swift,您的答案在 Objective-C 中。【参考方案2】:

我不确定我是否理解你,但是: 1)在动画块之外更改约束(第二次)。 2) 改用 self.image.superview?.layoutIfNeeded()

【讨论】:

以上是关于使用自动布局时 UIImageView 没有动画的主要内容,如果未能解决你的问题,请参考以下文章

简单自定义 UITableViewCell 的自动布局错误

自动旋转和 UIImageView 动画的问题

自动布局:UIImageView 不随设备方向旋转

如何使用自动布局动画视图更改视图层次结构?

UIImageview 在自动布局上调整大小

使用 UITableViewAutomaticDimension 时 UIImageView 拉伸不正确