我有一个子类UIView
,它由多个图层组成(大多数是CAShapeLayers
,只有几个CATextLayers
)。我遇到的问题是,如果我使用动画块(UIView
,beginAnimations
)动画调整commitAnimations
的大小,并重新布局重写的子图层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];
所以问题是视图是正确的动画,但子图层不是。我可以看到视图在增长和缩小,但子层会立即增长,然后保持新的更大尺寸。调整视图大小时调整视图子层大小的最佳方法是什么?如何使用父视图以相同的方式制作动画?
答案 0 :(得分:1)
我需要查看更多代码才能真正解决问题,但是您可以尝试为miniView的图层设置动画而不是其视图。
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
animation.fromValue = [NSNumber numberWithFloat:0.0];
animation.toValue = [NSNumber numberWithFloat:1.0];
// additional setup...
[miniView.layer layoutIfNeeded];
[miniView.layer addAnimation:animation forKey:@"whateverYouWant"];
而不是使用UIKit动画,一旦你掌握它,它应该更灵活。