我有一个很奇怪的问题。
我认为我正在使用CAKeyframeAnimation
制作动画。动画按预期方式工作,但是,一旦激发了委托的animationDidStop:finished
方法,则与该视图关联的图层在使用该图层的nil
方法进行检查时始终返回animationForKey:
。
这是问题的说明:
// This is in the view controller
- (void) doAnimation:(id)sender {
CAKeyframeAnimation *positionAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
[positionAnimation setValues:arrayOfPoint];
[positionAnimation setDuration:0.5];
// ViewController is the delegate and has the animationDidStop:finished: method
positionAnimation.delegate = self;
[positionAnimation setValue:@"I am Text" forKeyPath:@"positionAnimation"];
[someView.layer addAnimation:positionAnimation forKey:@"positionAnimation"];
someView.layer.position = newPosition;
}
在控制器的其他地方,我定义了
animationDidStop:finished:
方法,如下所示:- (void) animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
NSArray *array = [someView.layer animationKeys];
NSString *stringValue = [anim valueForKey:@"positionAnimation"];
NSLog(@"valueForKey: %@", stringValue);
// Prints 'I am Text'
if(anim == [someView.layer animationForKey:@"positionAnimation"]) {
//THIS NEVER GET CALLED
}
}
为什么if块永远不会评估为True?为什么
[someView.layer animationForKey:@"positionAnimation"]
总是nil
?此外,stringValue
具有正确的数据,但数组也是nil
。 最佳答案
我只能猜测,但是也许调用方法animationDidStop:finished:
时,您的动画已从图层中删除。因此[someView.layer animationForKey:@"positionAnimation"]
为零。
希望这会有所帮助
关于iphone - UIView层的animationForKey:始终为零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5646070/