问题标签 [nsanimationcontext]

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 投票
4 回答
8875 浏览

cocoa - NSLayoutConstraint.constant 忽略动画

我正在为我的一个应用程序创建一个自动布局友好的拆分视图类。它的各种特性之一是它可以折叠窗格,并且可以为它们的折叠设置动画,就像你可能看到的 NSSplitView 所做的那样。

由于我正在使用约束,因此我通过在窗格上放置所需的宽度 =(当前宽度)约束,然后以动画方式将约束的常量设置为 0 来实现此目的:

这很好用。不幸的是,稍后扩展窗格的效果并不好。

如果我插入一些计时代码,我可以看到完成处理程序几乎立即触发,在它有时间动画之前移除约束。在 NSAnimationContext 上设置持续时间无效。

知道我在这里做错了什么吗?

0 投票
1 回答
2149 浏览

cocoa - 减慢或暂停 NSAnimationContext

我有一个 NSAnimationContext (只是一个滚动视图),只要光标进入视图,我想放慢速度和/或暂停。我已经实现了对何时发生这种情况的检测——现在我只需要弄清楚如何减慢已经在进行中的动画。我已经想出了如何使用 CALayers 来做到这一点 - 但我需要使用动画代理无法在此动画中使用多个 AppKit 视图,因此核心动画将无法工作。有谁知道如何做到这一点?有没有办法跟踪 NSAnimationContexts 然后稍后更改它们?

这是我的代码的一小部分,第一个块被循环调用。每次一个 agnation 完成时,下一个将开始。

这是 mouseEntered: 方法中的代码。每当调用它时,都不会调用 completionHandler 并且应用程序会冻结。

另外,有没有办法提前结束 NSAnimationContext 而不是调用完成处理程序?

0 投票
1 回答
660 浏览

objective-c - 动画 NSSplitview 和窗口大小

我想要实现的是,当用户按下按钮时,窗口会增长,额外的空间被一个展开 NSSplitview并增长以填充空间的面板占用。

我可以轻松地为窗口调整大小和拆分视图独立增长设置动画,但是当我尝试将两个动画放在一起时,一个不可避免地会在另一个之前或逐步发生。首先窗口部分调整大小,然后拆分视图调整大小,然后窗口完成调整大小,最后拆分视图也完成。关于为什么会发生这种情况的任何想法?

这是我使用的代码:

0 投票
1 回答
930 浏览

cocoa - 为什么 NSView 动画师在 Cocoa 中不起作用

我的项目中有一个 NSView 想要移动,但我通常用于其他对象的动画不适用于它......我应该怎么做才能让它移动?这是我的代码:

0 投票
2 回答
4917 浏览

objective-c - 围绕中心旋转 NSView

我正在尝试为 NSView 围绕其中心的旋转设置动画,但它在旋转过程中不断左右移动。这是什么原因造成的?

旋转时上移:

在此处输入图像描述

旋转时下移:

在此处输入图像描述

0 投票
1 回答
1630 浏览

objective-c - 检查 NSAnimationContext runAnimationGroup 是取消还是成功

我正在为视图制作动画(通过显示它),之后我需要发布通知(一旦动画完成)。无论应用程序的设计方式如何,当视图隐藏时(通过动画)会发出另一个通知。所以基本上我有一个“showView”和一个“hideView”方法。每个人都这样做:

问题是在后台的另一个线程中,我有一个定期计时器,它执行“健全性检查”以查看是否需要隐藏视图(如果不需要)。这是一种激进的方法,但很有必要,因为应用程序的许多组件都响应不同的事件和场景。由于这个原因,我有时会得到一个“竞争条件”,用户点击了“showView”,但同时我们的一个线程觉得应该立即隐藏视图。

当两者都在主线程上发布通知时,应用程序会无限期地挂在 SpinLock 中。如果我能够确定上面的动画块是否被“取消”(即在同一视图上执行的另一个动画块),我可以完全避免这种情况。在这种情况下,我不会发布通知,这样就不会强制进行检查。

长话短说:我需要能够检查动画成功结束后是否调用了“completionHandler”或者它是否被取消。我知道在 iOS 中这是可能的,但我在 OS X 中找不到任何方法。请帮忙。

0 投票
1 回答
366 浏览

ios - iOS 的 NSAnimationContext

我的问题是:

  1. NSAnimationContext 在 iOS 中工作吗?

  2. 如果问题 1 的答案是否定的,那么 CATransaction 是一个很好的替代品吗?

0 投票
0 回答
182 浏览

cocoa - NSAnimationContext 行为不端

我有一个按钮可以触发主窗口以动画化它的高度,从而在下拉菜单中显示一些选项。按钮(和它的兄弟)被放置在窗口的两个底角,所以我希望它们随着窗口向下动画 - 被“锁定”在距窗口底部边缘固定距离处。

问题:按钮的动画可能是 10 次中的 1 次 - 其余时间它们似乎在 y 轴上随机偏移。最重要的是,这两个按钮的偏移量不同——尽管动画代码相同,但它们的行为并不相同。

在 OSX 10.9 Mavericks 上部署和运行,动画可以正常工作 - 没有行为不端。

关于如何获得以下简单代码以在 OSX < 10.9 上工作的任何想法?

0 投票
0 回答
237 浏览

objective-c - NSAnimationContext 同时在几个视图上

我有两个NSViews。我有一个简单的需求,将一个视图滑出屏幕,将另一个视图滑入视图。

我一直在玩NSAnimationContext并设法实现了一个很好的简单动画,但是它不会为我的两个视图设置动画。

这是我的代码:

我所做的就是将两个视图从左向右移动 1000 像素(即animViewOffset)。

由于代码当前,它只会为singUpView. 如果我注释掉设置signUpView框架原点的行,它将为loginView. 但它永远不会让他们俩在一起。

我怎样才能使它们一起动画?

0 投票
3 回答
1765 浏览

objective-c - 为什么 NSAnimationContext completionHandler 不起作用(有时)?

在这种情况下,完成块执行但不幸的是不等待窗口重新定位完成,而是立即打开窗口的编辑表并将它们一起移动。

最奇怪的是,在同一个源文件上面的几行相同类型的完成块工作正常:-O

我在这里想念什么?