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

Ros*_*nko 3 animation ios autolayout

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

[self.view layoutIfNeeded];
[UIView animateWithDuration:0.4 animations:^{
    self.widthConstraint.constant = width;
    [self.view layoutIfNeeded];
}];
Run Code Online (Sandbox Code Playgroud)

红色视图按预期动画,但内部的绿色标签立即改变其宽度.我玩过不同的动画标志,尝试了几个技巧,但没有带来它的工作.

在这里找到消息来源.

TIA

Ros*_*nko 8

好像我找到了问题的根源.约束不是麻烦,UILabel是.

如果UILabel用简单的方式替换我的项目,UIView它将按预期平滑地动画.这是UILabel内容动画的问题.您可以达到正确的动画行为设置label.contentMode = UIViewContentModeCenter但看起来很难看.

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

在此处找到有关UILabel动画的更多详细信息.