我有一个子类化的
UIView
,由几个图层组成(大部分是 CAShapeLayers
,还有少量的 CATextLayers
)。我的问题是,如果我使用动画块(beginAnimations
,commitAnimations
)对UIView
的大小进行动画调整并在重写的layoutSubviews
中重新布局子图层,则图层不会随着UIView
一起动画。
下面是我用于动画UIView
框架的代码:miniView.backgroundColor = [UIColor orangeColor];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0f];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationRepeatCount:MAXFLOAT];
[UIView setAnimationRepeatAutoreverses:YES];
miniView.frame = newFrame;
[UIView commitAnimations];
问题在于视图本身可以正常地进行动画处理,但子层却不能。我可以看到视图的大小会增加和缩小,但子层会立即增大并保持新的较大尺寸。当视图大小改变时,调整视图的子层大小的最佳方法是什么?如何使它们以与父视图相同的方式进行动画处理?