我有一个非常简单的应用程序。它包含一个红色 View 和一个绿色标签。还有一个运行动画的按钮。我通过更改其宽度约束常量的值来为红色 View 设置动画。
[self.view layoutIfNeeded];
[UIView animateWithDuration:0.4 animations:^{
self.widthConstraint.constant = width;
[self.view layoutIfNeeded];
}];
红色 View 按预期进行动画处理,但内部的绿色标签会立即改变其宽度。我玩了不同的动画标志,尝试了 SO 的几个技巧,但没有带来它的工作。
请查找the sources here .
TIA
最佳答案
看来我找到了问题的根源。约束不是问题,UILabel
才是。
如果您将我的项目中的 UILabel
替换为简单的 UIView
,它将按预期流畅地设置动画。是UILabel
内容动画的问题。您可以设置正确的动画行为 label.contentMode = UIViewContentModeCenter
但它看起来很难看。
解决此问题的最佳方法 - 不要尝试在动画期间更改 UILabel
的大小。尝试发明一些其他行为。在我的例子中,我将 UILabel
的 alpha 更改为 0,并将 x 位置更改为大于容器 View 的宽度。
请查找有关 UILabel
动画的更多详细信息 here .
关于ios - UILabel 不在 UIView 中设置动画,使用了自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26595513/