我正在尝试使用以下代码为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"];
会为视图的主图层设置动画。
感谢。
答案 0 :(得分:3)
在CAAnimation
方法中不要添加drawRect:
。 CoreAnimation在需要重绘视图内容时(可以随时)调用它。您应该在将视图添加到其父级后添加动画。
答案 1 :(得分:2)
您无法为frame属性设置动画。改为为边界或位置设置动画。