Слайд в 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;