使用核心动画进行缩放

时间:2013-01-28 16:20:24

标签: cocoa core-animation

我有一个NSScrollView,我希望缩小50%。我使用以下代码执行此操作:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

animation.fromValue = [NSNumber numberWithFloat:1.00];
animation.toValue = [NSNumber numberWithFloat:0.50];
[animation setDuration:0.20f];

[animation setFillMode:kCAFillModeForwards];
[animation setRemovedOnCompletion:NO];

[self.scrollView.layer addAnimation:animation forKey:@"drag"];

这样可行,但滚动视图的文档视图在我缩小缩小视图外部时会收到mousedown事件。因此,尽管滚动视图及其内容在视觉上看起来缩小了,但从技术上讲它们并非如此。

我将如何做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:2)

图层动画的行为与您描述完全相同(动画仅更改外观,而不是基础几何体。)

尝试使用UIView块动画并更改滚动视图的变换而不是图层的变换。

编辑:

喔。对不起,我以为这是iOS。我想我应该注意到你说它是一个NSView,而不是UIView。我最近在iOS上完成了大部分工作,而我的OSX经验主要来自Core Animation之前的日子。

我认为答案是获取视图的动画代理并设置更改,但我只在Mac OS中用动画代理做了一些学习练习,所以我不得不做一些挖掘来查找细节。