UILabel没有在UIView内部制作动画,使用自动布局

时间:2014-10-27 19:38:59

标签: ios animation autolayout

我有一个非常简单的应用程序。它包含一个红色视图和一个绿色标签。还有一个运行动画的按钮。我通过更改宽度约束常量的值来为红色视图设置动画。

[self.view layoutIfNeeded];
[UIView animateWithDuration:0.4 animations:^{
    self.widthConstraint.constant = width;
    [self.view layoutIfNeeded];
}];

红色视图按预期动画,但内部的绿色标签会立即改变其宽度。我玩过不同的动画旗帜,尝试了几个技巧,但没有让它起作用。

请找the sources here

TIA

2 个答案:

答案 0 :(得分:8)

似乎我找到了问题的根源。约束不是问题,UILabel是。

如果您使用简单UILabel替换项目中的UIView,它将按预期顺利制作动画。这是UILabel内容动画的问题。您可以达到正确的动画行为集label.contentMode = UIViewContentModeCenter,但它看起来很难看。

解决此问题的最佳方法 - 在动画期间不要尝试更改UILabel的大小。尝试发明一些其他行为。在我的情况下,我将UILabel的alpha更改为0,将x位置更改为容器视图的宽度。

请详细了解UILabel动画here

答案 1 :(得分:0)

我看过你的项目。我没有那么多从编辑器设置约束的经验,但我强烈建议你遇到麻烦尝试在代码中做。我个人会对这个红色视图的宽度设置约束,并使用可视化格式设置标签边距上的约束,它将类似于:@"H:|[label]|"并将此约束添加到红色视图中。这应该可以解决问题。