UILabel不在UIView内部设置动画,使用自动布局
问题描述:
我有一个非常简单的应用程序。它包含一个红色视图和一个绿色标签。还有一个运行动画的按钮。我通过改变其宽度约束常量的值来动画红色视图。UILabel不在UIView内部设置动画,使用自动布局
[self.view layoutIfNeeded];
[UIView animateWithDuration:0.4 animations:^{
self.widthConstraint.constant = width;
[self.view layoutIfNeeded];
}];
红色视图按预期动画,但内部的绿色标签立即改变其宽度。我玩了不同的动画标志,尝试了几个来自SO的提示,但没有启用它。
请发现the sources here。
TIA
答
看来我已经找到了问题的根源。约束不是一个麻烦,UILabel
是。
如果您在我的项目中使用简单的UIView
来代替UILabel
,它将按预期顺利进行动画处理。这是一个内容动画UILabel
的问题。你可以达到正确的动画行为集label.contentMode = UIViewContentModeCenter
,但它看起来很丑。
解决此问题的最佳方法 - 不要在动画过程中更改大小UILabel
。尝试发明一些其他行为。在我的情况下,我将UILabel
的alpha更改为0和x的位置,使其大于容器视图的宽度。
请找到UILabel
动画here更多细节。
答
我看了看你的项目。我没有太多的编辑器设置约束的经验,但我会强烈建议你在出现问题时尝试使用代码。就我个人而言,我会对这个红色视图的宽度设置动画约束,并使用可视化格式在标签边距上设置约束条件,如下所示:@"H:|[label]|"
并将此约束添加到红色视图。这应该可以解决问题。