iphone:为CALayer子层设置动画

时间:2010-11-16 21:36:02

标签: iphone objective-c core-animation calayer

我正在尝试使用以下代码为UIView图层的子图层设置动画:

CALayer *sublayer = [[CALayer alloc] init];
[sublayer setFrame:myRect]; // myRect is a portion of the view's frame rectangle
[self.layer addSublayer:sublayer];

以及后来的drawRect:方法:

CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"opacity"];
anim.duration = 1.0f;
anim.fromValue = [NSNumber numberWithFloat:1];
anim.toValue = [NSNumber numberWithFloat:.5];
anim.delegate = self;
[sublayer addAnimation:anim forKey:@"animateOpacity"];

我不明白为什么我的子图层没有动画,因为代码[self.layer addAnimation:anim forKey:@"animateOpacity"];会为视图的主图层设置动画。

感谢。

2 个答案:

答案 0 :(得分:3)

CAAnimation方法中不要添加drawRect:。 CoreAnimation在需要重绘视图内容时(可以随时)调用它。您应该在将视图添加到其父级后添加动画。

答案 1 :(得分:2)

您无法为frame属性设置动画。改为为边界或位置设置动画。

相关问题