同时执行cornerRadius和约束动画

Posted

技术标签:

【中文标题】同时执行cornerRadius和约束动画【英文标题】:Perform a cornerRadius and constraint animation at the same time 【发布时间】:2018-03-19 16:16:24 【问题描述】:

我想制作一个录制按钮的动画,不录制时,它是一个红色的大圆圈,但是当它录制时,它变成了一个小圆角的小矩形。

我是这样执行动画的:

buttonWidthConstraint.constant = isRecording ? 33 : 66
UIView.animate(withDuration: 0.2) 
    self.innerButtonView.layer.cornerRadius = self.isRecording ? 3 : 33
    self.innerButtonView.layoutIfNeeded()

红色视图是innerButtonView,它被约束固定,它有一个宽度约束,我在其中更改了constant

但是动画看起来是这样的:

我做错了什么?我不知道它是否相关,但是当它很小时我也看不到 3px 圆角半径。

【问题讨论】:

【参考方案1】:

看起来缺少动画也被描述为here。 他们使用

修复了它
self.layoutIfNeeded()

而不是

self.innerButtonView.layoutIfNeeded()

我还建议尝试 Sandeep Bhandari 的答案。

【讨论】:

以上是关于同时执行cornerRadius和约束动画的主要内容,如果未能解决你的问题,请参考以下文章

动画时无法同时满足约束

如何快速制作带有约束的动画?

约束动画之前的跳跃图像

如果设置隐藏,iOS UIStackView 无法同时满足约束

自动布局、约束和动画

iOS - 使用自动布局执行多个同步动画