UILabel尺寸更改不会使用自动布局设置动画

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UILabel尺寸更改不会使用自动布局设置动画相关的知识,希望对你有一定的参考价值。

我有一个动态宽度的UILabel(可见度的彩色石灰绿色),它的邻居有一个固定的前导和尾随约束(绿色和红色视图)。我希望这个表在移动其中一个邻居时调整其宽度(圆角红色/绿色视图)。但是,我对这个更改的动画有一个问题,因为我的标签的宽度“跳转”到没有动画的新值。对于我的右对齐标签,这意味着文本本身也会跳转。

enter image description here

我正在动画红色/绿色视图的运动,如下所示:

- (void)show {
    self.edgeConstraint.constant = 0;
    [UIView animateWithDuration:0.25 animations:^{
        [self.contentView layoutIfNeeded];
    }];
}

- (void)hide {
    self.edgeConstraint.constant = -100;
    [UIView animateWithDuration:0.25 animations:^{
        [self.contentView layoutIfNeeded];
    }];
}
答案

问题在于UILabel内容模式。你看到类似的问题here。由于缩短了绘制文本的标签,因此标签会执行绘图传递,但它会使用动画块的最后一帧进行更新。创建平滑动画的最简单方法是使用greaterThanOrEqualTo前导约束并将textAlignment设置为.natural

当我这样做时,我得到的结果在顶部而不是在底部设置qazxsw poi qazxsw poi。

textAlignment

演示源代码:

.right

以上是关于UILabel尺寸更改不会使用自动布局设置动画的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局移动标签并为更改设置动画?

在位置之前为 UILabel 尺寸设置动画

如何使用自动布局约束为移动 UILabel 设置动画?

自动布局动画保持 UILabel 居中

基于尺寸元素的设备旋转期间的动画更改将在旋转完成后进行

UICollectionView 上的动画自动布局约束更改