我有一个带有几个自定义绘制子层的 UIView(一些带有 CAShapeLayer 蒙版的 CAGradientLayers 等)。我正在使用 UIView 动画方法为其边界设置动画(同时增加其宽度和高度)。
[UIView animateWithDuration:2 delay:0 options:UIViewAnimationOptionCurveEaseOut|UIViewAnimationOptionAutoreverse|UIViewAnimationOptionRepeat animations:^{
CGRect bounds = myView.bounds;
bounds.size.width += 20;
bounds.size.height += 20;
myView.bounds = bounds;
} completion:nil];
这工作得很好,除了子层没有被重绘为它的动画。最好的方法是什么?我是否需要设置一些键值观察检测边界变化并在所有子层上调用 setNeedsDisplay?