在下面的.gif中,我有一个与设备屏幕尺寸相同的视图(米色背景)。该视图有一个子视图(紫色背景),我使用自动布局定位。它被设置为与其超视图相同的宽度,其常量值为-18,并且其CenterX值设置为与其超视图相同,因此它的中心位于每侧9pts的空间。
在该视图的内部,是一个UILabel,也使用自动布局定位。它被设置为与其超视图相同的宽度,其常数值为-20,其CenterX与其超视图相同,因此它的每一侧都有10个空间。
当用户点击紫色视图时,我想执行多步动画,其中第一步涉及紫色视图扩展为与其超视图相同的宽度。
我正在使用以下代码执行此操作:
[UIView animateWithDuration:3.0 animations:^{
[constraint setConstant:0.0];
[view.superview layoutIfNeeded];
}];
问题(如第一个.gif中所示)是UILabel立即向右移动,然后在动画播放时逐渐回到中心。
动画不正确:
然而,在下一个.gif中,动画正确执行。我使用相同的代码来执行动画,但不是使UILLabel的宽度与其超级视图相同(减去20pts),而是将宽度硬编码为静态值,使用0作为约束乘数,和357作为常数值。
纠正动画:
这实现了我想要实现的效果,但我宁愿不用硬编码UILabel的宽度(另外我很好奇它为什么这样做)。
有什么想法吗?