如何使用曲线为 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 设置动画。 (获得任意曲线)