动画UIView及其子图层

时间:2010-08-03 21:21:28

标签: iphone animation uiview calayer

我有一个子类UIView,它由多个图层组成(大多数是CAShapeLayers,只有几个CATextLayers)。我遇到的问题是,如果我使用动画块UIViewbeginAnimations)动画调整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];

所以问题是视图是正确的动画,但子图层不是。我可以看到视图在增长和缩小,但子层会立即增长,然后保持新的更大尺寸。调整视图大小时调整视图子层大小的最佳方法是什么?如何使用父视图以相同的方式制作动画?

1 个答案:

答案 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动画,一旦你掌握它,它应该更灵活。