我刚刚开始玩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];
答案 0 :(得分:0)
你的代码很混乱。
首先需要启用视图的图层支持。
然后,您要么使用动画代理来更改要设置动画的属性, OR 您想要使用CAAnimation为其图层设置动画,而不是两者。
为简单地设置动画的位置,使用动画代理更简单。
这些天我主要为iOS写作,所以我几乎没有使用动画代理。
我相信你应该能够摆脱你的CAAnimation,你的代码设置动画代理上的框架应该工作。您需要设置标志以使视图层支持,以便使其工作。
将视图添加到其超级视图后添加此代码:
imageView.wantsLayer = YES;