问题标签 [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 投票
1 回答
1327 浏览

ipad - 子层上的 CAlayer 变换随着手势闪烁(ipad)

我有一个包含很少其他子层的 CALayer(实际上是 CATextLayer)

当用户在 ipad 上做通常的手势时,我想在该层上应用一些转换,但它似乎不能正常工作。使用 CALayer 的目的是仅将转换应用于该层,以便我的所有子文本层将同时受到相同转换的影响。

正在发生的事情是转换似乎在先前位置和当前位置之间闪烁。我真的不明白可能是什么问题......例如,当我做一个 2 根手指平移手势时,CaTextLayer 位置在我的手势过程中一直闪烁,最后它们都正确放置在新的翻译位置。

所以一切似乎都很好,除了那个让我很困扰的闪烁的东西。

我需要设置一些我不知道的属性吗?我在想它可能也与边界和框架有关......

这是我创建 CATextLayer 的方法(仅在创建时完成一次,并且可以正常工作):

这就是我将它们添加到我的 Super CALayer 的方式

以下是我如何应用我的转换:

_layerMgr.transform = CATransform3DMakeAffineTransform(_transform);

0 投票
2 回答
1779 浏览

ios - CATransaction 和 CAAnimation 有什么区别?

可能与一些问题重复,但我在这里找不到它们。

0 投票
1 回答
481 浏览

objective-c - CATransaction:实现翻页动画时的问题

我正在尝试实现一个翻页动画——当用户浏览页面的速度不是太快时,它会起作用。

我的代码如下所示:

endTransforma CATransform3DIdentity,正如我所说,它工作正常。我cleanupFlip正在为下一页准备屏幕截图,这使我能够执行翻页动画。我正在制作的屏幕截图似乎是问题所在;一旦用户点击快速浏览页面,动画就不会发生,但页面只是改变 - 没有翻页动画。我通过设置一个animationInProgress避免在旧动画完成之前开始下一个动画的标志得到了改进。

我不明白的是:我希望工作得很好,因为我animationInProgress在动画的最后设置了标志,所以一切都应该为下一次运行做好准备——但它不是......

在模拟器上我可以比在设备上更快地点击——在那里我必须等待一秒钟才能开始下一页。

如果不制作屏幕截图(例如,仅使用空图像),一切都会按预期工作。cleanupFlip如果需要一些时间,这似乎是个问题。

有什么想法可以让我完成这项工作吗?

非常感谢!

0 投票
1 回答
840 浏览

macos - CALayer Live Resize 性能不佳

我有一个 UI,其中NSCollectionViewItemView 的内容是通过 CALayers 以编程方式绘制的。我CAConstraintLayoutManager在调整大小时使用 a 来保持子图层的布局一致,但是这样做时我的性能非常差。似乎调整窗口大小会导致调整两个CATextLayers 的大小以使其适合根层的宽度,并重新定位一个CATextLayer以使其保持右对齐,这会导致应用程序花费大部分时间来执行该CGSScanConvolveAndIntegrateRGB功能(我使用了 Time Profiler 仪器)。

最“昂贵”的层(即使是唯一显示的也会导致最卡顿的层)是一个包裹的 multiline CATextLayer。我完全不知道如何获得更好的性能(我试过不使用 aCAConstraintLayoutManager和层对齐,但我得到了同样的东西)。有人遇到过这个问题吗?有办法解决吗?

PS:我已经对布局管理器进行了子类化,并在执行期间- (void)layoutSublayersOfLayer:(CALayer *)layer通过将 YES 设置为禁用了所有动画kCATransactionDisableActionsCATransaction但这似乎没有帮助。

编辑:我禁用了文本图层的字体平滑,性能提高了一点(很少),但它在 _ZL9view_drawP7_CAViewdPK11CVTimeStampb 中花费了大量的时间(这是由 ATI Radeon 驱动程序的线程调用的东西,我认为)。

0 投票
1 回答
4574 浏览

ios - 如何检测由 CATransaction 触发的动画的完成

我有一个 CALayer,我只是在控制器的 initWithNibName 中创建并添加到我的视图控制器主视图的子视图中:然后,我执行以下动画:

我怎么知道这个动画什么时候完成?performSelector:延迟 2 秒。方法似乎不是解决它的“正确方法”。

0 投票
1 回答
591 浏览

ios - 使用图层动画后视图动画突然消失

我正在使用 CABasicAnimation 和 CATransaction 为我的自定义 UIView 中的某些图层设置动画。

但是,当之后使用导航控制器的后退按钮返回我的应用程序的其余部分时,导航控制器不再动画。甚至当然后去任何其他视图时。

我正在使用带有 iOS5 的 iPad。

0 投票
1 回答
1761 浏览

objective-c - 如何循环包含在 CATransaction 块中的几个 CABasicAnimations?

在 Xcode 4.3.2 中为 iPhone 5.1 使用 Obj.-c;我创建了一个 CALayers 数组,所有这些都来自同一个图像。然后我希望通过 CATransactions 分组同时将 CABasicAnimation 应用于数组中的每个 CALayer。这一切都奏效了。但是,我想重复调用 CATransactions 中包含的 CABasicAnimations 块,但能够在每次同时执行块时单独修改每个动画的属性。例如,我希望每次为每一层上的动画随机更改动画的 from 和 to 值。因为我想重复相同的基本动画,但进行属性修改;将动画的 repeatCount 属性设置为某个高值将不起作用。我尝试在 makeSwarm 方法中使用 for 循环反复调用 animate 方法,使用 animationDidStop 来引发另一个 animate 方法调用,但最终发生的是使用 CATransaction 块而不是在末尾进行新调用,并且还有方法调用本身(将 [self animate]; 放在 animate 方法的末尾);而这些都不起作用。这是基本代码。我认为这很简单,但我没有看到重要的东西。谢谢,赛斯 但我没有看到重要的东西。谢谢,赛斯 但我没有看到重要的东西。谢谢,赛斯

ViewController.h

ViewController.m

0 投票
2 回答
2846 浏览

animation - 等待 UIView 动画循环完成的最佳方法是什么?

我正在尝试循环多个UIViews并在每个上执行动画,但我想知道所有动画何时完成。动画循环完成后调用函数的最佳方法是什么?或者,有没有办法等到一切都完成?

我尝试使用setAnimationDidStopSelector,但它不会触发。在这种情况下,我通过让它们淡出然后被移除来清除游戏板上的一些“筹码”(NumberedChipView 是 UIView 的子类)。在筹码离开棋盘之前,游戏无法继续。

我也试过CATransaction无济于事:

更新:

我现在可以让选择器触发,但它不会等待动画循环完成。

0 投票
3 回答
881 浏览

ios - iOS 3.2 上的 CATransaction + UIView

我需要在 iOS 3.2 上实现非常自定义的动画所以,在 4.0 之前我既不能使用块动画也不能使用 UIKit 动画。我尝试使用核心动画。

这是我的代码:

不幸的是,它不起作用:视图立即改变大小/不透明度,没有任何动画。

这是我的尝试:

  • 我将新框架设置为不是查看而是设置到其层(someView.layer.frame = ...) - 更糟糕的是,因为视图的子视图没有调整大小。
  • 我将禁用操作选项设置为是和否。

解决方案要求:

  • 必须支持 iOS 3.2(无块)。
  • 动画必须应用于不同的视图(因此,应用于不同的层)。
  • 动画曲线已经够难了,所以我不能使用预定义的动画曲线(或者,通过 CA 语言,MediaTimingFunction)。
0 投票
1 回答
3788 浏览

objective-c - CoreAnimation:警告,删除了未提交 CATransaction 的线程

当我的应用程序运行时,我经常收到以下警告:

CoreAnimation:警告,未提交的已删除线程CATransaction;在环境中设置 CA_DEBUG_TRANSACTIONS=1 以记录回溯。

有谁知道为什么有时会出现此消息?它有可能导致崩溃吗?