CABasicAnimation не имеет никакого эффекта

У меня очень простая проблема, и я вырываю из нее волосы. Я пытаюсь оживить перемещение NSButton. Теперь я знаю о почти слишком простом:

[[button animator] setFrame:newCGRect];

Однако я бы хотел увеличить время, необходимое для перемещения кнопки. Итак, я изучил немного более сложную CABasicAnimation. Я думаю Я все делаю правильно, но NSButton вообще не двигается.

CGPoint center = CGPointMake(10, 20);

CALayer *layer = button.layer;

layer.position = CGPointMake(button.frame.size.width / 2, button.frame.size.height / 2);

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
animation.fromValue = [layer valueForKey:@"position"];
[animation setToValue:[NSValue valueWithPoint:center]];
[animation setFillMode:kCAFillModeForwards];
[animation setRemovedOnCompletion:NO];
[animation setDuration:3.0];

[layer addAnimation:animation forKey:@"position"];

Здесь кнопка - это NSButton. Я устанавливаю положение слоя в центр кнопки, потому что я думаю , что «позиция» должна относиться к центру. Затем все, что я делаю, это перемещаю (предположительно) кнопку в центр в анимации продолжительностью 3 секунды. Я добавляю анимацию к слою, но ничего не происходит.

Кто-нибудь знает, что я делаю не так? Или, кстати, есть ли способ использовать свойство аниматора и для установки длины анимации?

5
задан elliottbolzan 30 October 2011 в 01:05
поделиться