问题标签 [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.
ipad - 子层上的 CAlayer 变换随着手势闪烁(ipad)
我有一个包含很少其他子层的 CALayer(实际上是 CATextLayer)
当用户在 ipad 上做通常的手势时,我想在该层上应用一些转换,但它似乎不能正常工作。使用 CALayer 的目的是仅将转换应用于该层,以便我的所有子文本层将同时受到相同转换的影响。
正在发生的事情是转换似乎在先前位置和当前位置之间闪烁。我真的不明白可能是什么问题......例如,当我做一个 2 根手指平移手势时,CaTextLayer 位置在我的手势过程中一直闪烁,最后它们都正确放置在新的翻译位置。
所以一切似乎都很好,除了那个让我很困扰的闪烁的东西。
我需要设置一些我不知道的属性吗?我在想它可能也与边界和框架有关......
这是我创建 CATextLayer 的方法(仅在创建时完成一次,并且可以正常工作):
这就是我将它们添加到我的 Super CALayer 的方式
以下是我如何应用我的转换:
_layerMgr.transform = CATransform3DMakeAffineTransform(_transform);
ios - CATransaction 和 CAAnimation 有什么区别?
可能与一些问题重复,但我在这里找不到它们。
objective-c - CATransaction:实现翻页动画时的问题
我正在尝试实现一个翻页动画——当用户浏览页面的速度不是太快时,它会起作用。
我的代码如下所示:
是endTransform
a CATransform3DIdentity
,正如我所说,它工作正常。我cleanupFlip
正在为下一页准备屏幕截图,这使我能够执行翻页动画。我正在制作的屏幕截图似乎是问题所在;一旦用户点击快速浏览页面,动画就不会发生,但页面只是改变 - 没有翻页动画。我通过设置一个animationInProgress
避免在旧动画完成之前开始下一个动画的标志得到了改进。
我不明白的是:我希望工作得很好,因为我animationInProgress
在动画的最后设置了标志,所以一切都应该为下一次运行做好准备——但它不是......
在模拟器上我可以比在设备上更快地点击——在那里我必须等待一秒钟才能开始下一页。
如果不制作屏幕截图(例如,仅使用空图像),一切都会按预期工作。cleanupFlip
如果需要一些时间,这似乎是个问题。
有什么想法可以让我完成这项工作吗?
非常感谢!
macos - CALayer Live Resize 性能不佳
我有一个 UI,其中NSCollectionViewItem
View 的内容是通过 CALayers 以编程方式绘制的。我CAConstraintLayoutManager
在调整大小时使用 a 来保持子图层的布局一致,但是这样做时我的性能非常差。似乎调整窗口大小会导致调整两个CATextLayer
s 的大小以使其适合根层的宽度,并重新定位一个CATextLayer
以使其保持右对齐,这会导致应用程序花费大部分时间来执行该CGSScanConvolveAndIntegrateRGB
功能(我使用了 Time Profiler 仪器)。
最“昂贵”的层(即使是唯一显示的也会导致最卡顿的层)是一个包裹的 multiline CATextLayer
。我完全不知道如何获得更好的性能(我试过不使用 aCAConstraintLayoutManager
和层对齐,但我得到了同样的东西)。有人遇到过这个问题吗?有办法解决吗?
PS:我已经对布局管理器进行了子类化,并在执行期间- (void)layoutSublayersOfLayer:(CALayer *)layer
通过将 YES 设置为禁用了所有动画kCATransactionDisableActions
,CATransaction
但这似乎没有帮助。
编辑:我禁用了文本图层的字体平滑,性能提高了一点(很少),但它在 _ZL9view_drawP7_CAViewdPK11CVTimeStampb 中花费了大量的时间(这是由 ATI Radeon 驱动程序的线程调用的东西,我认为)。
ios - 如何检测由 CATransaction 触发的动画的完成
我有一个 CALayer,我只是在控制器的 initWithNibName 中创建并添加到我的视图控制器主视图的子视图中:然后,我执行以下动画:
我怎么知道这个动画什么时候完成?performSelector:延迟 2 秒。方法似乎不是解决它的“正确方法”。
ios - 使用图层动画后视图动画突然消失
我正在使用 CABasicAnimation 和 CATransaction 为我的自定义 UIView 中的某些图层设置动画。
但是,当之后使用导航控制器的后退按钮返回我的应用程序的其余部分时,导航控制器不再动画。甚至当然后去任何其他视图时。
我正在使用带有 iOS5 的 iPad。
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
animation - 等待 UIView 动画循环完成的最佳方法是什么?
我正在尝试循环多个UIViews
并在每个上执行动画,但我想知道所有动画何时完成。动画循环完成后调用函数的最佳方法是什么?或者,有没有办法等到一切都完成?
我尝试使用setAnimationDidStopSelector
,但它不会触发。在这种情况下,我通过让它们淡出然后被移除来清除游戏板上的一些“筹码”(NumberedChipView 是 UIView 的子类)。在筹码离开棋盘之前,游戏无法继续。
我也试过CATransaction
无济于事:
更新:
我现在可以让选择器触发,但它不会等待动画循环完成。
ios - iOS 3.2 上的 CATransaction + UIView
我需要在 iOS 3.2 上实现非常自定义的动画所以,在 4.0 之前我既不能使用块动画也不能使用 UIKit 动画。我尝试使用核心动画。
这是我的代码:
不幸的是,它不起作用:视图立即改变大小/不透明度,没有任何动画。
这是我的尝试:
- 我将新框架设置为不是查看而是设置到其层(someView.layer.frame = ...) - 更糟糕的是,因为视图的子视图没有调整大小。
- 我将禁用操作选项设置为是和否。
解决方案要求:
- 必须支持 iOS 3.2(无块)。
- 动画必须应用于不同的视图(因此,应用于不同的层)。
- 动画曲线已经够难了,所以我不能使用预定义的动画曲线(或者,通过 CA 语言,MediaTimingFunction)。
objective-c - CoreAnimation:警告,删除了未提交 CATransaction 的线程
当我的应用程序运行时,我经常收到以下警告:
CoreAnimation:警告,未提交的已删除线程
CATransaction
;在环境中设置 CA_DEBUG_TRANSACTIONS=1 以记录回溯。
有谁知道为什么有时会出现此消息?它有可能导致崩溃吗?