【问题标题】:Scaling with Core Animation使用核心动画缩放
【发布时间】:2023-03-08 02:25:02
【问题描述】:

我有一个想要缩小 50% 的 NSScrollView。我用下面的代码做到这一点:

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 事件。因此,尽管滚动视图及其内容在视觉上看起来是按比例缩小的,但从技术上讲并非如此。

我该怎么做呢?

谢谢!

【问题讨论】:

    标签: cocoa core-animation


    【解决方案1】:

    图层动画的行为与您描述的完全一样(动画只会改变外观,不会改变底层几何体。)

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

    编辑:

    哦。抱歉,我以为这是 iOS。我想我应该注意到你说它是 NSView,而不是 UIView。这些天我的大部分工作都是在 iOS 上完成的,而我的 OSX 体验主要来自 Core Animation 之前。

    我认为答案是获取视图的动画代理并对其进行更改,但我只在 Mac OS 中使用动画代理进行了一些学习练习,所以我必须进行一些挖掘才能查找细节。

    【讨论】:

    • 谢谢邓肯。忘了说它是一个 OS X 应用程序。但我想这同样适用?
    • 请注意:使用 CoreAnimation 制作动画时,将 additive 属性设置为 YES 也会更改几何体(模型层)
    • @adamWaite,设置附加属性不会改变模型层,但不会改变视图的属性?
    • 不确定是否完全诚实。我对 CoreAnimation 还很陌生,并没有过多地使用它。我认为你是对的。我今天早些时候尝试使用缩放变换制作动画,并在屏幕上渲染像素,但没有响应触摸提示 CGRectZero 帧。我放弃了它以修改视图:/.
    猜你喜欢
    • 2011-05-06
    • 2019-12-28
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    相关资源
    最近更新 更多