我有一个非常简单的应用程序。它包含一个红色视图和一个绿色标签。还有一个运行动画的按钮。我通过更改宽度约束常量的值来为红色视图设置动画。
[self.view layoutIfNeeded];
[UIView animateWithDuration:0.4 animations:^{
self.widthConstraint.constant = width;
[self.view layoutIfNeeded];
}];
红色视图按预期动画,但内部的绿色标签会立即改变其宽度。我玩过不同的动画旗帜,尝试了几个技巧,但没有让它起作用。
TIA
答案 0 :(得分:8)
似乎我找到了问题的根源。约束不是问题,UILabel
是。
如果您使用简单UILabel
替换项目中的UIView
,它将按预期顺利制作动画。这是UILabel
内容动画的问题。您可以达到正确的动画行为集label.contentMode = UIViewContentModeCenter
,但它看起来很难看。
解决此问题的最佳方法 - 在动画期间不要尝试更改UILabel
的大小。尝试发明一些其他行为。在我的情况下,我将UILabel
的alpha更改为0,将x位置更改为容器视图的宽度。
请详细了解UILabel
动画here。
答案 1 :(得分:0)
我看过你的项目。我没有那么多从编辑器设置约束的经验,但我强烈建议你遇到麻烦尝试在代码中做。我个人会对这个红色视图的宽度设置约束,并使用可视化格式设置标签边距上的约束,它将类似于:@"H:|[label]|"
并将此约束添加到红色视图中。这应该可以解决问题。