0

我刚刚开始使用 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];
4

1 回答 1

0

你的代码很混乱。

您首先需要打开视图的图层支持。

然后你要么想要使用动画代理来改变你想要动画的属性,要么你想要使用CAAnimation来动画它的图层,而不是两者。

为了简单地为其位置设置动画,使用动画代理更简单。

这些天我主要为 iOS 写东西,所以我几乎没有使用动画代理。

我相信你应该能够摆脱你的 CAAnimation 并且你在动画代理上设置框架的代码应该可以工作。但是,您需要设置该标志以使您的视图具有图层支持,以使其正常工作。

将您的视图添加到其超级视图后添加此代码:

imageView.wantsLayer = YES;
于 2013-06-19T17:50:48.380 回答