Вопрос

Я создаю NSView, который в своем методе drawRect создает и добавляет NSImageView в качестве подпредставления.

Я хотел бы повернуть этот NSImageView (circleView) или [self].Итак, другим методом я пытаюсь это сделать:

-(void)startAnimation {
CABasicAnimation* spinAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
spinAnimation.toValue = [NSNumber numberWithFloat:5*2*M_PI];
spinAnimation.duration = 2;
[circleView.layer addAnimation:spinAnimation forKey:@"spinAnimation"];
}

Однако этот код ничего не делает при вызове метода.Я делаю что-то неправильно?Я попробовал self.layer и CircleView.layer, но, похоже, ни один из них не работает...

Это было полезно?

Решение

Вы просто определяете анимацию, а не вызываете блок анимации, который выполняет анимацию.

Вам нужно вызвать блок, определенный между:

+ beginAnimations:context:
+ commitAnimations

Чтобы запустить анимацию.

Редактировать01:Виноват.Я не обратил внимания на теги и добавил ответ для iPhone API.

Другие советы

Ответ на эту проблему заключается в том, что у NSView/NSImageView не было резервного слоя для анимации.

Вы устанавливаете это с помощью:

[NSView setWantsLayer:YES];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top