ios - UILabel 不在 UIView 中设置动画,使用了自动布局

标签 ios animation autolayout

我有一个非常简单的应用程序。它包含一个红色 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/

相关文章:

ios - mapView.addAnnotation() 说 "unexpectedly found nil while unwrapping an Optional value"

objective-c - 我应该如何存储对象集合并提供特定的方法来查询它们?

android - 相当于 objective-c 中的 LocationManager .onLocationChanged

iphone - UIView removeFromSuperView 动画延迟

ios - 在动画之前在 UICollectionView 中使用 Core Data 加载数据

c++ - Assimp 不在 OpenGL 中的 MD5 模型 Bob 的节点中加载骨骼名称

swift - 无法让 stackview 在 ScrollView 中正确调整

ios - 在 Xcode 中构建 Twitter 的 Fabric API 时出现问题

ios - 在运行时根据设备更改约束

ios - 在 Swift 中设置自动布局约束,以使用可变的垂直空间填充不同的屏幕尺寸