2009-05-15 9 views
4

Dieser Code: (Selbst ist eine Unterklasse von NSView)Kernanimationspunkt wird ignoriert?

rotate = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 

    rotate.duration = 5; 

    rotate.toValue = [NSNumber numberWithFloat:(2*pi)]; 

    rotate.repeatCount = INFINITY; 

    rotate.removedOnCompletion = NO; 
    rotate.fillMode = kCAFillModeForwards; 

    NSLog(NSStringFromPoint(CGToNSPoint([self layer].anchorPoint))); 

    [self layer].anchorPoint = CGPointMake(0.5, 0.5); 

    NSLog(NSStringFromPoint(CGToNSPoint([self layer].anchorPoint))); 

    [[self layer] addAnimation:rotate forKey:@"constantRotation"]; 

sollte meine Schicht um seinen Mittelpunkt drehen. Ich habe den Ankerpunkt auf (0,5, 0,5) gesetzt, aber die Ansicht dreht sich immer noch um ihren Ursprung. Wie kommt es dazu? Ich habe ohne Erfolg gegoogelt, also bin ich sicher, dass es wahrscheinlich etwas wirklich einfach, dass ich nur fehlt ...

Die NSLog die sind scheinbar richtigen Werte melden. Die ersten Berichte (0, 0) und die zweite (0.5, 0.5)

+0

Sie eine Antwort nicht. Ich frage mich nur, ob Sie den Ankerpunkt von self.layer woanders setzen. Nach (docs) [http://developer.apple.com/documentation/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html#//apple_ref/occ/instp/CALayer/anchorPoint] es sein sollte (0,5, 0,5) ... – EightyEight

+0

Wenn Sie sagen, dass es um seinen Ursprung dreht, meinen Sie die untere linke Ecke? –

Antwort

2

Der Standardanchor ist standardmäßig 0,5, 0,5, so sollte es nicht eingestellt werden muß. Es ist möglich, dass Sie die Inhalte der Schicht positioniert sind, so dass es scheint, als wenn der Ursprung an dem Ankerpunkt wirklich ist.