我有一个非常简单的应用程序.它包含一个红色视图和一个绿色标签.还有一个运行动画的按钮.我通过更改宽度约束常量的值来为红色视图设置动画. [self.view layoutIfNeeded];[UIView animateWith
[self.view layoutIfNeeded]; [UIView animateWithDuration:0.4 animations:^{ self.widthConstraint.constant = width; [self.view layoutIfNeeded]; }];
红色视图按预期动画,但内部的绿色标签立即改变其宽度.我玩过不同的动画标志,尝试了几个技巧,但没有带来它的工作.
请找到the sources here.
TIA
好像我找到了问题的根源. UILabel的约束并不是一个麻烦.如果用简单的UIView替换我项目中的UILabel,它将按预期平滑地动画.这是UILabel内容动画的问题.你可以达到正确的动画行为设置label.contentMode = UIViewContentModeCenter,但它看起来很难看.
解决此问题的最佳方法 – 在动画期间不要尝试更改UILabel的大小.尝试发明一些其他行为.在我的例子中,我将UILabel的alpha更改为0,将x位置更改为容器视图的宽度.
请参阅有关UILabel动画here的更多详细信息.