我有一個CALayer
子類與浮動animAngle
作爲屬性標記爲@dynamic
。我已經爲子類實施了方法actionForKey
,initWithLayer
,needsDisplayForKey
和drawInContext
。 爲actionForKey
的定義如下CALayer子類不動畫屬性更改
- (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:對不起,這是一個錯字。它的動漫角色。 – rawatm
@ basstrekerk87,下次更好複製/粘貼,保存錯誤!你知道你實際上不需要手動縮進代碼嗎?使用按鈕或從3反引號開始(') –