可可 – 使用核心动画缩放

我有一个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事件.因此,尽管滚动视图及其内容在视觉上看起来缩小了,但它们在技术上并非如此.

我该怎么做呢?

谢谢!

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

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

编辑:

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

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

点赞