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