平滑调整自动布局的内容压缩阻力优先级/大小约束的动画

时间:2014-11-30 23:59:26

标签: ios objective-c autolayout ios-autolayout

我有≤ constant高度约束和固定宽度约束的视图。在它内部,我有一个文本视图,其中包含对该外部视图的前导/尾随/顶部/底部约束,实际上是"停靠"在那个视图里面(只有几个边距)。我将文本视图的垂直内容压缩阻力优先级设置为750,并根据文本内容调整自身大小。当我进入第二行时它会增长,当我删除一行时会缩小等等。但是,我希望将增长/缩小设置为动画。我已将此代码添加到我的文本视图和我的外部视图的setFrame:代码中(它们都是自定义子类):

-(void)setFrame:(CGRect)frame{
    [super setFrame:frame];
    [UIView animateWithDuration:0.2 animations:^{
        [self layoutIfNeeded];
    } completion:nil];
}

它不起作用,它仍然没有动画。然后,我是子类NSLayoutConstraint,并使用相同的代码覆盖其setConstant:方法:

-(void)setConstant:(CGFloat)constant{
    [super setConstant:constant];
    if(self.shouldAnimate){
        [UIView animateWithDuration:0.2 animations:^{
            [self.firstItem layoutIfNeeded];
        } completion:nil];
    }
}

它也不起作用。我在这些方法中设置了一个断点,并且它们根本没有被调用。显然,布局变化发生在较低的水平。我怎样才能使我的观点成长和缩小?一个选项是禁用内容压缩阻力优先级,计算文本更改时文本视图的高度,然后手动设置高度属性,并在那里设置动画。但是如果有一个更清晰的解决方案涉及使用内容压缩阻力进行动态/自动调整大小,我不想继续使用它。有解决方案吗?

0 个答案:

没有答案