Io 为什么我要更换CALayer';s位置隐式动画,它仍然在我自己的动画之前生效?
我在做这样的事情:Io 为什么我要更换CALayer';s位置隐式动画,它仍然在我自己的动画之前生效?,io,core-animation,calayer,caanimation,Io,Core Animation,Calayer,Caanimation,我在做这样的事情: CABasicAnimation* translateA = [CABasicAnimation animation]; translateA.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; translateA.fillMode = kCAFillModeBoth; translateA.duration = 1;
CABasicAnimation* translateA = [CABasicAnimation animation];
translateA.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
translateA.fillMode = kCAFillModeBoth;
translateA.duration = 1;
CALayer* nextLayer = <some layer...>
[nextLayer addAnimation:translateA forKey:@"position.y"];
newPos = nextLayer.position;
newPos.y += someDelta;
nextLayer.position = newPos;
CABasicAnimation*translateA=[CABasicAnimation];
translateA.timingFunction=[CamediaTimingFunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];
translateA.fillMode=kCAFillModeBoth;
translateA.duration=1;
CALayer*nextLayer=
[nextLayer addAnimation:translateA forKey:@“position.y”];
newPos=nextLayer.position;
newPos.y+=someDelta;
nextLayer.position=newPos;
发生的事情是,我看到图层几乎“跳”到它的最终位置,然后我的动画开始了。我猜“几乎跳跃”实际上是“位置”的原始隐含动画(持续时间非常短)。我还尝试替换position而不是position.y,还尝试替换层中的整个动作字典(只是为了添加此动画)。但我总是得到同样的结果
我该怎么做才能有效地在1秒钟内看到图层转换?您能显示更多代码吗?在
drawInContext:
我在自己的图层中有这样一个:
+ (BOOL)needsDisplayForKey:(NSString *)key
{
if ([key isEqualToString:@"progress"])
return YES;
else
return [super needsDisplayForKey:key];
}
在这样做时:
[self.layer setValue:@1 forKey:@"progress"];
然后:
[self.layer addAnimation:animation forKey:@"progress"];
drawInContext:
在动画开始之前,正在使用progress 1调用。原来问题是我用@dynamic
合成了属性(progress)。删除它实际上解决了我的问题:-)您能显示更多代码吗?在drawInContext:
我在自己的图层中有这样一个:
+ (BOOL)needsDisplayForKey:(NSString *)key
{
if ([key isEqualToString:@"progress"])
return YES;
else
return [super needsDisplayForKey:key];
}
在这样做时:
[self.layer setValue:@1 forKey:@"progress"];
然后:
[self.layer addAnimation:animation forKey:@"progress"];
drawInContext:
在动画开始之前,正在使用progress 1调用。原来问题是我用@dynamic
合成了属性(progress)。删除此选项实际上解决了我的问题:-)