2009-05-15 3 views
4

Этот код: (само это подкласс NSView)Опорная точка ядра анимации игнорируется?

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"]; 

следует повернуть мой слой вокруг своего центра. Я установил точку привязки (0,5, 0,5), но представление все еще вращается вокруг его начала. Как это происходит? Я googled безрезультатно, поэтому я уверен, что это, вероятно, что-то действительно простое, что я просто не хватает ...

NSLogs, похоже, сообщают о правильных значениях. Первый из них сообщает (0, 0), а второй (0,5, 0,5)

+0

У вас нет ответа. Просто интересно, если вы установили опорную точку self.layer в другом месте. Согласно (docs) [http://developer.apple.com/documentation/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html#//apple_ref/occ/instp/CALayer/anchorPoint] он должен быть (0,5, 0,5) ... – EightyEight

+0

Когда вы говорите, что он вращается вокруг своего начала, вы имеете в виду нижний левый угол? –

ответ

2

По умолчанию значение anchorPoint по умолчанию 0,5, 0,5, поэтому его не нужно устанавливать. Возможно, что вы разместили содержимое слоя так, чтобы выглядело так, как будто начало координат находится в точке привязки.

Смежные вопросы