У меня очень простая проблема, и я убираю волосы. Я пытаюсь оживить движение 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"];
Здесь кнопка - кнопка NS. Я устанавливаю положение слоя в центр кнопки, потому что я думаю , что "положение" должно относиться к центру. Затем все, что я делаю, это перемещаю (предположительно) кнопку в центр, в анимации, которая длится 3 секунды. Я добавляю анимацию к слою, и тогда ничего не происходит.
Теперь, кто-нибудь знает, что я делаю не так? Или, на заметку, есть ли возможность использовать свойство аниматора и установить длину анимации?