从屏幕上滑入NSImage

时间:2013-06-15 18:46:57

标签: macos cocoa animation core-animation nsanimation

我刚刚开始玩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 个答案:

答案 0 :(得分:0)

你的代码很混乱。

首先需要启用视图的图层支持。

然后,您要么使用动画代理来更改要设置动画的属性, OR 您想要使用CAAnimation为其图层设置动画,而不是两者。

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

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

我相信你应该能够摆脱你的CAAnimation,你的代码设置动画代理上的框架应该工作。您需要设置标志以使视图层支持,以便使其工作。

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

imageView.wantsLayer = YES;