问题标签 [catransaction]

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 投票
0 回答
292 浏览

swift - Swift CATransaction 对象立即移动而不是持续时间

我正在将一个 Objective C 应用程序转换为 Swift 并遇到一个问题。这是我的有效的目标 C 代码。

这是我的 Swift 代码

我的问题是标签会立即移动,而不是考虑持续时间。我在两个项目中都启用了核心动画层。

我是否遗漏了 Swift 转换代码中的任何内容或设置不正确?

0 投票
2 回答
2172 浏览

ios - 应用补全时 CABasicAnimation 闪烁

我正在尝试将旋转动画按度数应用于 aUIImageView并将旋转变换保留在完成块中。

我面临的问题是,当执行完成块时,从动画的结束状态传递到完成块会产生可见的闪烁。

这是我目前正在使用的代码:

0 投票
1 回答
722 浏览

ios - 嵌套 CATransaction 的行为?

下面的代码将backgroundColorcommit.

但是使用嵌套显式CATransactions,仅在最外层事务提交时才更新屏幕。

所以这很奇怪,因为我们知道 runloop 会在每个循环中创建一个最外层的隐式事务。为什么在提交implicit transaction时这不被视为最外层事务?explicit transaction

0 投票
2 回答
1164 浏览

ios - 使用标签栏关闭视图控制器后动画不会停止

问题
我有两个视图控制器,它们都包含在各自UINavigationController的 s 和一个UITabBarController. 在其中一个视图控制器上,我正在创建气泡效果,在屏幕上绘制气泡并为其位置设置动画。当我使用标签栏移动到另一个视图控制器时会出现问题,这会导致 CPU 达到峰值并保持在 100% 并且气泡继续动画。

代码
气泡的代码封装在一个UIView子类中。

drawRect方法重复调用该spawn函数以使用气泡填充视图。

CATransaction完成处理程序中,我从超级视图中删除形状并创建一个新形状。函数调用self.spawn()似乎是问题所在

viewDidDisappear包含的视图控制器中,我调用以下内容:


我尝试将函数removeAllAnimations添加到UITabBarControllerDelegate

0 投票
2 回答
487 浏览

ios - CAShapeLayer 动画无需更新路径

在为 CAShapeLayer 制作动画时,是否需要不断更新图层的路径,或者有没有办法单独依赖 CABasicAnimation?

在下面的示例中,我设置了四个圆形路径并绘制它们。然后我想让它们动画消失。然而,在动画完成后,它们会弹回原来的路径。

我知道我可以添加它来设置新路径:

但宁愿避免不断更新路径,而是完全依赖动画层。这可能吗?

类似于: layer.path = animation.path 或 animation.updatesOriginalPath=true; 可能是一厢情愿,不确定。

0 投票
2 回答
2915 浏览

xcode - Swift 3 如何正确编写完成处理程序块

我是 Xcode 和编程语言的新手,我需要你的帮助。我正在处理消息应用程序,但无法使用完成处理程序块。这是我的代码:

我使用CATransaaction 执行BatchUpdates,但是performBatchUpdates 方法中的Completion Handler Block 无法完成。如您所见,这不是正确的编写方式,我知道,但是我已经尝试了所有我知道的方法来实现它,但它不会。完成 :

请帮我。谢谢 !!

0 投票
1 回答
674 浏览

objective-c - CAShapeLayer 路径动画

我正在尝试为特定形状的路径更改设置动画。我可以通过用简单的 .path [cgpath] 设置器替换此代码来手动更改而无需动画。但是,我想为美学的变化制作动画。

执行此代码时,尽管日志显示动画已完成,但形状并没有发生任何变化。

0 投票
1 回答
1123 浏览

ios - 为什么在添加视图后立即启动 UIView 动画不起作用?

a 的动画UIView应该在视图添加到父视图后立即开始:

但是,结果是当视图在父视图中可见时动画已经结束。UIView.animate不动画但立即设置,可能是因为视图在被调用self.layer.colors时还不可见。didMoveToSuperview

如何让动画正常启动?

0 投票
1 回答
66 浏览

swift - Swift:两个 CAAnimation 禁用之间的区别

我目前正在 Swift 中的 CALayers 上使用 CABasic Animations。

CATransaction.setValue(kCFBooleanTrue, forKey:kCATransactionDisableActions)和 和有什么不一样CATransaction.setDisableActions(true)

0 投票
1 回答
110 浏览

ios - 为什么当 CATransactions 开始和结束大约在同一时间时动画会抖动?

问题

如何修复滚动动画中的抖动?

如下面的动画所示,每次音符(黑色椭圆)到达垂直的蓝线时都会出现短暂的抖动,这使得音符似乎在一瞬间向后退。

滚动动画由一系列 CATransaction 触发,每次滚动动画完成和另一个滚动动画开始时都会发生抖动。

全屏录制

在下面的慢动作视频中,看起来实际上有两个椭圆相互重叠,一个停止并淡出,而另一个继续滚动。但是,代码实际上并没有在另一个椭圆上创建一个椭圆。

慢动作缩放屏幕录制

视频 (gif) 来自 iPhone SE 屏幕录制,而不是模拟器。

问题约束:

  • 此动画的一个关键目标是在每个音符上进行平滑的线性滚动,当每个音符头到达蓝线时开始和结束。蓝线代表伴奏音乐中的当前时间点。

  • 滚动持续时间和距离会有所不同,并且这些值是在滚动期间动态生成的,因此在执行期间硬编码滚动速率将不起作用。

尝试的解决方案

  1. 设置一个isScrolling标志,以防止在以前的动画完成之前开始新的动画,并没有修复抖动。
  2. 将滚动开始时间设置得稍微早一点(即 1 或 2 次屏幕重绘的长度),也不起作用。
  3. 一起做 1 和 2稍微改善了问题,但没有解决它。

代码片段

A StaffLayer(定义如下)控制滚动:

  • .scrollAcrossCurrentChordLayer()管理CATransaction. 此方法由.scrollTimer CADisplayLink

  • .start().scrollTimer管理CADisplayLink

为了清楚起见,代码被大量缩写