我有一个 UIView 子类,它绘制一个半径变化的圆(带有漂亮的弹性动画)。 View 决定了圆的大小。
我希望这个 UIView 子类更改其帧大小以匹配对圆半径的动画更改,并且我希望这些更改能够修改连接到 View 的任何 NSLayoutConstraint(以便约束到圆边缘的 View 将随着圆圈大小的调整而移动)。
我知道实现 -(CGSize)intrinsicContentSize
并在半径更改时调用 invalidateIntrinsicContentSize
将告诉约束进行更新,但我不知道如何将更改动画化内在内容大小
。
从 [UIView animateWith... block 中调用 invalidateIntrinsicContentSize
会立即更新布局。
这是否可能,是否有解决方法/更好的方法?
最佳答案
invalidateIntrinsicContentSize
与动画和 layoutIfNeeded
配合得很好。您需要考虑的唯一一件事是,更改内在内容大小会使 super View 的布局无效。所以这应该有效:
[UIView animateWithDuration:0.2 animations:^{
[self invalidateIntrinsicContentSize];
[self.superview setNeedsLayout];
[self.superview layoutIfNeeded];
}];
关于cocoa-touch - 动画内在内容大小的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154008/