问题标签 [nsviewanimation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2289 浏览

cocoa - 有什么理由使用 NSViewAnimation 而不是 CoreAnimation 技术?

我正在开发一个 Snow Leopard 应用程序,并且正在制作一些视图动画(交换它们),并且我已经看到了一些使用 NSViewAnimation 的旧示例。我想知道这些是否完全被核心动画淘汰了?

对我来说使用起来似乎相当简单

但我只是想知道我是否遗漏了一些东西,或者 NSViewAnimation 是否仍然相关(除了向后兼容性)。

0 投票
3 回答
965 浏览

objective-c - 使用推送动画查看交换

我想通过将旧视图推到一边以滑入新视图(kCATransitionPush 类型)来交换一个视图。要使用 CoreAnimation,我需要在我的视图中使用 CALayers。问题是通过 setWantsLayer 将支持层附加到我的窗口内容视图会扭曲视图中的所有内容。

我不确定这是否与我正在使用一个名为 MAAttachedWindow ( http://mattgemmell.com/source ) 的 NSWindow 子类的事实有关,它是一种 HUD 样式的透明弹出窗口,附加到屏幕上的另一个元素。

如果需要,我可以提供这种失真的屏幕截图。我通过 NSViewAnimation 获得了动画,但正如许多其他人所经历的那样,NSViewAnimation 非常慢。我宁愿使用 CoreAnimation 但这个问题阻止我使用它。

非常感谢任何见解

0 投票
1 回答
4113 浏览

cocoa - 阻止 NSView 的实例接收鼠标事件

我在打开核心动画层的窗口中有一个 NSView。我不时使用此视图显示带有动画的图像。我需要整个视图作为后层,而不仅仅是图像。在这个我称之为 AnimationBaseView 的视图后面是用户与之交互的其他视图。

除了 AnimationBaseView 阻止其他视图获取 rightMouseDown 事件之外,一切都很好。

我尝试了以下方法:

  • 返回 NO 到 AcceptFirstResponder 到 AnimationBaseView
  • 根据需要隐藏和取消隐藏 AnimationBaseView,但会产生令人讨厌的闪烁。

谢谢你的帮助,何塞。

0 投票
1 回答
1462 浏览

cocoa - 带有 CIFilter 的 CATransition 第一次不起作用,第二次起作用

我想为 NSView 添加 CATransition 动画。我有以下代码:

问题是:

  1. 我执行这段代码。

  2. [[contentView animator] addSubview:mySubview];第一次这样做,它不起作用。视图刚刚出现。CATransition委托方法被调用,但finished标志为 NO(假)。

  3. 我删除视图[mySubview removeFromSuperview];并通过动画删除,finished标志 = YES (true)。

  4. 我重复第 2 步和第 3 步,它适用于动画。第 2 步现在告诉动画是finished(YES)。按预期工作。

怎么了?

0 投票
1 回答
1144 浏览

objective-c - 使用 NSViewAnimation 和 NSAnimationEaseOut 奇怪的行为

在我的一个可以拖动的视图中,如果用户将它放在不合适的位置,它会简单地回到鼠标按下时记录的原始帧。这几天没有动画效果很好,但我决定引入动画:

这适用于 NSAnimationLinear 和默认的 NSAnimationEaseInOut,但我真正想要的只是减速感,我认为 NSAnimationEaseOut 应该这样做。出于某种原因,当我使用它时,视图会立即捕捉到它应该结束的帧,然后动画滑回光标放置它的位置(开始帧),然后重新捕捉到(应该是什么)结束帧.

所有其他模式(NSAnimationLinear、NSAnimationEaseIn、NSAnimationEaseInOut)似乎工作得很好。我是否误解了 NSAnimationEaseOut 的目的?

0 投票
1 回答
1180 浏览

cocoa - 有没有办法让 NSAnimation 像在 iPhone 上一样“从当前状态开始”?

我想让视图在窗口调整大小时移动到不同的位置。我目前在接收 NSWindowDidResizeNotification 时使用 NSViewAnimation 执行此操作。

(“动画”是一个数组,其中包含我的视图的新矩形,就像 NSAnimation 想要的那样)当我调整窗口大小时,此代码被多次调用。因此,在调整大小时,此代码会被调用大约 20 次以调整大小。我现在有 20 个视图移动的动画。20 个不同的重叠。(看起来有很多不同的视图,但我认为动画之间的跳跃是一样的)

在 iPhone 上,只有视图在移动,我可以设置 [UIView setAnimationBeginsFromCurrentState:YES] 并且它会起作用。有没有办法在 OSX 上做到这一点?我可以在视图上创建一个 isAnimating 变量,但它只会移动到一个位置,并且在制作动画时会忽略快速调整大小。

我如何在 OSX 上执行此操作?谢谢

0 投票
0 回答
342 浏览

cocoa - NSViewAnimation - 太慢了

我对 Cocoa 编程很陌生。我有自定义视图(iBox),其中还有另一个类(iCircle)的 8 个自定义视图。我想制作动画来调整 iBox 的大小并将 8 个 iCircles 中的每一个移动到距 iBox 特定一侧一定距离的位置。

我用最简单的方法做了。A 创建了一个 NSViewAnimation 对象,其中包含 9 个 NSDictionaries,其中包含 8 个 iCircles 和 iBox 中的每一个的 NSViewAnimationTargetKey、NSViewAnimationStartFrameKey、NSViewAnimationEndFrameKey。

所以当我开始动画时,它播放得非常慢,就像幻灯片一样,但不是动画。它看起来像是在非常旧的 GPU 上运行的 3D 游戏。如果我只为 iBox 和 1 个 iCircle 设置动画,它会播放流畅。

所以我的问题是:你知道究竟是什么导致了这种行为吗?是说NSViewAnimation 对象中有大量的Dictionaries,还是说有大量的iCircles。也许它们应该是类似 NSViewCells 的东西。我在某处读到使用单元格比相同类型的单独视图更有效。

优化此类动画以使其高效且流畅运行的最佳方法是什么?

对于这个问题,我将不胜感激。

0 投票
0 回答
1671 浏览

objective-c - 动画 NSView 帧,然后跳转到特定帧

我试图滑动一个网格NSView,从另一个显示另一行NSView。然后,一旦动画完成,第二个NSView将消失,第一个将立即使用新数据移回其原始位置。

它的工作时间为 4/5 秒。我得到的唯一错误是第一个视图没有重置到原始位置;它停留是动画完成。

这是基本思想(我这里没有代码):

我在 Google 上搜索时遇到了麻烦,因为runAnimationGroup:completionHandler它是 Lion 中的新手。

0 投票
1 回答
667 浏览

nsviewanimation - 使用 NSViewAnimation 连续动画 frameRotation

我正在尝试找出正确的方法来连续为支持图层的 NSView 的 frameRotation 设置动画。

特别是,我基本上是在尝试重新创建新的 Launchpad 在您单击并按住图标时的动画效果。事件处理不是问题,而是实际的重复动画。

到目前为止,我已经使用 NSTimer 使用视图的动画代理来为 frameRotation 设置动画。虽然这可行,但它似乎是资源密集型的,我确信 NSAnimation 可以用于此。

我只是想知道是否有人可以在这里指出我正确的方向。

编辑:这里的文档:http: //developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/AnimationGuide/Articles/ViewAnimations.html#//apple_ref/doc/uid/TP40003593-DontLinkElementID_7

仅讨论视图的框架矩形和 alpha 值。所以我不确定如何将它用于 frameRotation

亲切的问候,亚历克

0 投票
0 回答
364 浏览

cocoa - 带有 kCGDesktopWindowLevel 的 NSWindow 的 NSViewAnimation 闪烁

我有一个NSWindow设置,kCGDesktopWindowLevel所以它位于桌面图标后面的桌面上(如墙纸)。

我正在尝试使用NSViewAnimation.

问题是动画闪烁很多。我追踪到了窗台。

如果我使用默认窗口级别,动画会按预期顺利运行。

任何建议可能是什么原因?在那个级别绘制窗口有什么不同吗?

编辑:

这可能是一个 RunLoop 问题吗?背景窗口不接收用户输入。但是,我的应用程序还有另一个可以接收输入的普通窗口。