【发布时间】:2013-08-19 18:54:00
【问题描述】:
我有一个CALayer 子类,其中浮动animAngle 作为属性标记为@dynamic。我已经为子类实现了方法actionForKey、initWithLayer、needsDisplayForKey 和drawInContext。
actionForKey的定义如下
- (id<CAAction>)actionForKey:(NString *)event {
if([event isEqualToString:@"animAngle"]) {
return [self animationForKey:event];
}
return [super actionForKey:event];
}
和
- (CABasicAnimation *)animationForKey:(NSString *)key
{
NSString *animValue = [[self presentationLayer] valueForKey:key];// Logs as 0
CABasicAnimation *anim;
if([key isEqualToString:@"animAngle"]) {
anim = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
anim.repeatCount = HUGE_VAL;
anim.autoreverses = YES;
//anim.fromValue = [[self presentationLayer] valueForKey:key]; // setting animation value from layer property as in here does not work.
anim.fromValue = [NSNumber numberWithFloat:0.5f]; // This works
}
anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
anim.duration = 0.11;
return anim;
}
在其他类中:
myCASublayer.animAngle = 0.5f;
不知何故,返回的CABasicAnimation 无法正确使用层“animAngle”属性。
我在这里可能做错了什么?
【问题讨论】:
-
一个叫
animAngle另一个叫wiggleAngle -
@RobvanderVeer:抱歉打错了。它的动画角度。
-
@basstrekerk87,下次更好地复制/粘贴,保存错误!您知道您实际上不必手动缩进代码吗?使用按钮或以 3 个反引号 (`) 开头
-
@RobvanderVeer:确实使用了添加代码按钮,但仍然以某种方式错位了代码。会变得更好
-
我仍然在努力解决这个问题。有人可以帮忙吗!!!
标签: ios calayer caanimation