如何使用曲线为 NSView 设置动画

Posted

技术标签:

【中文标题】如何使用曲线为 NSView 设置动画【英文标题】:How do I animate NSView with curve 【发布时间】:2019-02-09 12:37:23 【问题描述】:

我知道如何使用+[NSAnimationContext runAnimationGroup:completionHandler:]NSView 对象设置动画,但我看不到在此类动画上设置动画曲线的方法。我看到NSAnimation 有一个包含NSAnimationCurve 参数的init 方法,但我无法弄清楚如何使用此方法指定动画期间实际发生的情况。 NSAnimation 的文档真的很难理解,我找不到任何示例。因此,如果有人可以解释我如何向NSAnimationContext 动画添加曲线或在NSAnimation 动画中指定动画,那将非常有帮助。提前致谢!

【问题讨论】:

【参考方案1】:

你要找的是timingFunction

您可以将其设置在 runAnimationGroup 块内:

NSAnimationContext.currentContext.timingFunction = …

并使用predefined functions 或使用控制点创建您自己的。

【讨论】:

完美!谢谢!我确实看到了timingFunction 属性,但由于某种原因它没有注册为我需要的。 NSView 动画的文档一团糟,听起来比实际复杂得多。 要完成您提供的 sn-p,我必须导入 QuartzCore,然后执行 context.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];【参考方案2】:

pointium's answer 的 Swift 版本:

NSAnimationContext.current.timingFunction = .init(name: .linear)

【讨论】:

以上是关于如何使用曲线为 NSView 设置动画的主要内容,如果未能解决你的问题,请参考以下文章

同时使用不同的动画曲线为 AutoLayout 约束设置动画

如何在曲线上为实体球体设置动画

使用NSView.layoutSubtreeIfNeeded()动画自动布局约束不适用于macOS High Sierra

如何更改自定义 UICollectionView 布局引擎中的默认布局动画曲线?

如何使用Swift在Cocoa App中设置NSView的颜色?

使用 CADisplayLink“结合”与 CAMediaTimingFunction 为 UIView 设置动画。 (获得任意曲线)