问题标签 [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.
cocoa - 使用 NSView.layoutSubtreeIfNeeded() 动画自动布局约束在 macOS High Sierra 上不起作用
我有一个基本的 Mac 应用程序,其视图动画通过自动布局完成:
- 我在当前视图的右侧添加了一个新视图
- 我更新了约束,以便新视图最终填充窗口
→ 动画将使它看起来好像视图从右侧滑入。
动画自动布局更改的推荐方法是:
- 更新约束
- 利用
NSAnimationContext.runAnimationGroup()
- 设置
allowsImplicitAnimation
在true
动画块内 view.layoutSubtreeIfNeeded()
在动画块内调用
我遵循了这个建议,在 macOS Sierra 上一切正常,但在 macOS High Sierra 上,动画不再发生。相反,视图显示在其最终位置,没有动画。
我找到了一种解决方法:我使用DispatchQueue.main.async
. 但是,这似乎是一个 hack,我想知道这里是否还缺少其他东西。
这是我的实际代码:
swift - 带有布局约束和 NSAnimationContext 的动画不正确
我想扩展视图以响应对显示三角形的单击,但动画没有按照我想要的方式运行。
(对不起,如果 gif 没有循环。该工具应该创建一个循环动画,但显然没有......)
当它展开时,外部视图会立即改变大小,然后内容会向上动画回到原位。当它折叠时,大小再次立即改变,然后内容在其中滚动。我想要的是动画大小的变化,显示/隐藏内容而不使它们相对于封闭视图的左上角移动。
我的代码如下所示:
openConstraint
将封闭视图的底部约束到最后一个字段的底部。closedConstraint
将其限制在顶部文本标签的底部,因此只有标签可见。
那么我该如何 a) 为封闭视图的边界设置动画并且 b) 在动画期间将内容固定在顶部?
swift - NSTableCellView 内未发生自动布局约束的动画
我正在尝试使用NSTableCellView
. 约束更新得很好,但动画没有发生。
下面的代码在里面执行tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int)
:
这cell
是我的NSTableCellView
,并且是单元格内部的progressWidthConstraint
宽度约束。NSView
我需要做一些特别的事情来让动画在 a 中工作NSTableCellView
吗?
macos - 如何使用曲线为 NSView 设置动画
我知道如何NSView
使用 为对象设置动画+[NSAnimationContext runAnimationGroup:completionHandler:]
,但我看不到在这种类型的动画上设置动画曲线的方法。我看到它NSAnimation
有一个包含NSAnimationCurve
参数的 init 方法,但我无法弄清楚如何使用此方法指定动画期间实际发生的情况。的文档NSAnimation
真的很难理解,我找不到任何示例。因此,如果有人可以解释我如何向NSAnimationContext
动画添加曲线或在动画中指定NSAnimation
动画,那将非常有帮助。提前致谢!
swift - 在 Swift 中动画一组 NSView 以在 NSStackView 中一个接一个出现的最佳方式是什么?
我可以使用以下代码向 NSStackView 添加多个 NSTextField:
optionsStackView.addView(newOption, in: .center)
我遇到的问题是让每个 NSTextField (newOption) 在视图出现时一个接一个地出现 - 在使用 NSAnimationContext.runAnimationGroup { (context) in } 时不是一次都出现
每次 for 循环运行时,我基本上需要延迟半秒,以便为所有 NSTextField 一个接一个地显示一个 NSTextField,但我不知道该怎么做。我看着使用DispatchQueue.main.asyncAfter(deadline: .now() + 0.5)
,但不能完全弄清楚在没有所有东西同时出现的情况下完成这项工作的代码......
我确定我在这里遗漏了一些简单的东西。
有人可以帮忙吗?
swift - NSAnimationContext 在被观察者调用时崩溃
我有两个 WebView:webView
和customizerWebView
. 这两个 WKWebViews 都由一个尾随约束附加。本质上,当我转到菜单并单击“显示定制器”showCustomizer()
或“隐藏定制器”hideCustomizer()
时,它会调用相应的函数并显示或隐藏与customizerWebView
.
澄清一下,当从附加的NSMenuItems
. 但是,当show/hideCustomizer()
从本质上检测 URL 的观察者调用时 - 即。url.contains("#close")
- 应用程序在第一行animator()
代码崩溃并出现以下错误:Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
ViewController.swift
有人可以告诉我为什么这个动画在从 NSMenu 调用时看起来和工作完美无瑕 100 次,但在hideCustomizer()
从观察者函数调用一次时崩溃?
我也尝试过调用 NSMenu 对象函数hideCustomizerMenu(self)
,但无济于事。
swift - Swift MacOS NSAnimationContext 不遵循其持续时间
我有一个非常简单的动画,它在整个主视图中移动一个视图,如下所示:
我遇到的这个问题是运动是瞬时的,没有我设定的持续时间。感谢您的帮助。
swift - swift中的MacOS动画延迟
是否可以使用 Cocoa 为动画添加延迟?在我当前的代码中,它显示一个窗口并用淡入淡出动画隐藏它。我想做的是在淡入淡出动画之前添加一个延迟。
swift - 使用淡入淡出动画更改 NSTextField 文本颜色 - Cocoa
我正在尝试NSTextField
通过使用淡化动画来更改文本颜色NSAnimationContext
。但它不起作用。请帮我解决这个问题。谢谢大家!
代码: