我有一个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吗?