Слайд в NSImage из закадрового

Я только начал играть с NSAnimation и Core Animation, но я не могу оживить NSImage, скользящий с экрана (я также не могу заставить работать вращающуюся анимацию, но это другой вопрос). Когда я инициализирую NSImageView (с NSImage, установленным на его свойство изображения) за пределами окна, изображение не отображается. Что именно я делаю неправильно, чтобы NSImage не перерисовывался?

imageView = [[NSImageView alloc] initWithFrame:NSMakeRect(-818, 0, 818, 494)];
NSImage *image = [NSImage imageNamed:@"image.png"];

[imageView setImage:image];

[mainView addSubview:imageView];

NSRect outFrame = NSMakeRect(678, 0, imageView.frame.size.width, imageView.frame.size.width);

CABasicAnimation *animation = [CABasicAnimation animation];
animation.toValue = [NSValue valueWithRect:outFrame];


NSView *view = self.window.contentView;
view.animations = @{@"frame" : animation};
[[view animator] setFrame:outFrame];

1 ответ

Решение

Ваш код сбит с толку.

Сначала вам нужно включить поддержку слоев вашего вида.

Затем вы либо захотите использовать прокси-сервер анимации, чтобы изменить свойство, которое хотите анимировать, ИЛИ вы хотите использовать CAAnimation для анимации его слоя, а не оба.

Для простой анимации его положения использовать прокси-анимацию проще.

В настоящее время я в основном пишу для iOS, поэтому я едва использовал анимационные прокси.

Я считаю, что вы должны иметь возможность просто избавиться от CAAnimation и ваш код, который устанавливает фрейм на прокси-сервере анимации, должен работать. Вам нужно установить флаг, чтобы сделать ваше представление слоистым, чтобы это работало.

добавьте этот код после добавления вашего представления к его суперпредставлению:

imageView.wantsLayer = YES;
Другие вопросы по тегам