Nicht animierbare Eigenschaften in Unterklassen von CALAyer

Ich habe eine Unterklasse von definiertCALayer mit einer animierbaren Eigenschaft wie besprochenHier. Ich möchte dieser Ebene jetzt eine weitere (nicht animierbare) Eigenschaft hinzufügen, um die interne Buchhaltung zu unterstützen.

Ich habe den Wert der neuen Eigenschaft in festgelegtdrawInContext: was ich aber finde, ist, dass es beim nächsten anruf immer auf 0 zurückgesetzt wird. Ist dies der Fall, weil Core Animation davon ausgeht, dass diese Eigenschaft auch für Animationen vorgesehen ist und dass der Wert bei Konstante 0 ohne weitere Anweisungen "animiert" wird? Wie kann ich Unterklassen von auf jeden Fall wirklich nicht animierbare Eigenschaften hinzufügen?CALayer?

Ich habe eine vorläufige Problemumgehung gefunden, die ein globales verwendetCGFloat _property Anstatt von@property (assign) CGFloat property würde aber lieber normale Eigenschaftensyntax verwenden.

UPDATE 1

So versuche ich die Eigenschaft in zu definierenMyLayer.m:

@interface MyLayer()

@property (assign) CGFloat property;

@end

Und so ordne ich ihm am Ende von einen Wert zudrawInContext::

self.property = nonZero;

Die Eigenschaft ist z.B. Lesen Sie am Anfang vondrawInContext: wie so:

NSLog(@"property=%f", self.property);

UPDATE 2

Möglicherweise ist dies die Ursache des Problems (Code, der von geerbt wurde)diese Stichprobe)?

- (id)actionForKey:(NSString *) aKey {
    if ([aKey isEqualToString:@"someAnimatableProperty"]) {
       CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:aKey];
       animation.fromValue = [self.presentationLayer valueForKey:aKey];
       return animation;
    }
    return [super actionForKey:aKey]; // also applies to my "property"
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage