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

ios - 无法在 ios 中减慢动画速度

我想在动画结束时减慢动画速度。
我正在浏览这段代码。

但是当它即将结束或在完成块时无法减速。

0 投票
1 回答
362 浏览

uitableview - CATransaction insertRowsAtIndexPaths,动画没有结束

我们的应用程序有一个表格视图,允许用户最小化/最大化其部分。还有一些动画与隐藏/显示行相关,具体取决于用户的输入,以及连接到不同的设备(通过蓝牙 4.0)。由于动画的不同来源,我们设置了一个调度程序来一次处理一个动画,这样我们就不会因为在 [tableview endUpdates] 之后不同步的行/部分的数量而发生任何崩溃。它对我们的目的非常有效。

但是,我们表中的一个新部分让我有些悲伤。根据连接到 iPad 的设备,该部分有 1 行或 8-9 行。其余行的高度为 0。当该部分有 8-9 行时,该部分最小化/最大化。但是,当该部分只有一行时,表格的 insertRowsAtIndexPaths 动画在该部分的行离开屏幕之前不会完成。因此,除非用户更改选项卡或向下滚动到足够远以将表格推离屏幕,否则由于我们的调度程序首先检查它是否已经忙,因此无法最小化/最大化其他部分。这是为动画调用的代码:

animateOpenTableSection 是:

如您所见,我在 animateOpenTableSection 函数中有调试语句,还有 animateTableUsingAnimationType 中的完成块。后者永远不会被调用,直到单行离开屏幕。关于为什么 tableview 不会放弃 CATransaction 的任何想法?

0 投票
1 回答
3708 浏览

swift - SWIFT:在解码 HTML 实体时在事务中调用 +[CATransaction synchronize]

我正在制作一个获取博客 JSON 内容的应用程序。博客文章的标题显示在 tableView 中。

获取的标题是 HTML 编码的。所以我用这段代码解码了它们

我可以完成解码,并且标题完美地显示在模拟器中。但控制台显示此错误ThisIsMe[6837:2029906] +[CATransaction synchronize] called within transaction4 次。代码中没有其他错误,所有其他功能都运行良好。

请帮忙

0 投票
4 回答
2071 浏览

ios - CAShapeLayer 动画不会停留在屏幕上而是消失

我正在尝试绘制一个动画圆圈,但每个部分都需要另一种颜色。现在一切正常,除了在我再次调用该方法之前刚刚绘制的我的作品消失了,所以只有最后一部分留下了。我不想要那个,我想要在 4 次之后用不同的颜色笔画绘制一个完整的圆圈。

我怎样才能解决这个问题,它不会消失?

这是我的初始化代码:

这是我的平局:

0 投票
1 回答
2559 浏览

ios - CATransaction:视图在完成时闪烁

我正在编写一个有点复杂的动画,它分为两个步骤:

  1. 将不透明度更改为 0UIViews不需要可见并将 a UIImageView(具有alpha = 1)移动到另一个CGPoint(位置)。
  2. 将另一个UIView的不透明度改为1,UIImageView将上一步的不透明度改为0,然后在这一步的动画完成后,UIImageView从superview中移除。

我是这样做的:

第一步是在没有显式 CATransaction 的情况下完成的。这 2 个动画刚刚beginTime设置为CACurrentMediaTime(). 我在layer.addAnimation(...)通话后立即对视图应用更改。这里一切正常。

第二步实施中,我CATransaction.begin()一开始就打电话。内部begin/commit调用CATransaction我创建并添加 2CABasicAnimations到 2 个不同的层:一个用于将不透明度从 0 更改为 1(用于UIView),一个用于将不透明度从 1 更改为 0(用于UIImageView)。两个动画都beginTime设置为CACurrentMediaTime() + durationOfThePreviousStep

CATransaction.begin()我调用之后CATransaction.setCompletionBlock({...}),在这个完成块中,我对这两个视图应用更改:设置它们的新 alpha 并UIImageView从超级视图中删除。

问题是,在整个动画结束时UIView,alpha 动画为 1 次闪烁,这意味着它的 alpha 设置回 0(尽管我在完成块中将其 alpha 设置为 1),并且在完成块之后执行并且它的 alpha 再次上升到 1。

那么,问题是,如何摆脱这种闪烁?也许这个动画可以以更好的方式完成?

PS 我没有使用UIView动画,因为我对这些动画的自定义计时功能感兴趣。

编辑1:这是代码。我已经删除UIImageView了 alpha 动画,因为它不是真的必要。

编辑2:导致问题的一段代码:

也许问题是因为timeView有一个UITextField和一个UIScrollView有4个子视图。我试图用( )timeView的快照替换,但这没有帮助。timeViewUIImageView

编辑 3:新代码。使用此代码,timeView总是有alpha = 1,并且它也从 0 动画到 1。

0 投票
1 回答
1618 浏览

xcode - CoreAnimation 未提交的 CATraction NSComboBox

我正在使用下面函数中的一些数据填充 NSComboBox。填充后,我尝试滚动浏览我收到 CATransaction 警告的项目。任何人都可以阐明为什么会发生这种情况以及我可以做些什么来解决它?我发现它可能与在主线程以外的线程上更改组合框的 UI 有关,但在那之后我被卡住了。

这是我从调试区域得到的警告。

0 投票
1 回答
672 浏览

ios - 在 CABasicAnimation 中闪烁以进行旋转

每当按下按钮时,我都试图将 CAShapeLayer 从其当前角度旋转一个角度。

我正在使用委托函数 animationDidStop 在动画结束期间设置图层的变换,因为我注意到动画只改变了表示层的变换,而不是图层本身。

但是动画中有随机闪烁,这似乎是在动画结束时动画完成时,由于在委托函数animationDidStop中更新变换之前图层回到其先前的变换。如何消除闪烁?

0 投票
1 回答
1010 浏览

ios - CABasicAnimation 一直不工作

我有下面的代码应该给出视图“抖动”的效果,然后通过从屏幕上滑出来消除它。

有时它可以完美呈现,但大多数时候摇动动画不会显示,视图只会向上滑动。我无法弄清楚问题可能是什么:

0 投票
1 回答
2671 浏览

ios - 沿着上次更新的 GPS 坐标平滑移动和旋转 GMSMarker Swift iOS

我正在使用GMSMapView。因此,我添加了自定义GMSMarker并设置图像(例如自行车图像)并在用户开始移动并更改 locationManager 中标记的角度时为该标记设置动画。

目前我只是在更新 GMSMarker 的位置属性。它给出了 GMSMarker 跳跃效果。相反,我想将GMSMarker平滑/正确地移动和旋转到 GMSMapView 中。

我怎样才能在 Swift 中实现这一点?谢谢。

0 投票
0 回答
349 浏览

objective-c - 如何使用 CAAnimation 正确地按顺序制作动画

我只是关上门,延迟 2 秒/调用一个方法,然后再打开它们。一个来自左侧,另一个来自右侧。我首先使用 UIView 动画块,但后来意识到每当用户在动画期间离开应用程序时,它的完成块永远不会被调用。

当动画期间发生中断时,我找不到任何人抱怨这种行为,因此无法解决问题,现在我希望 CAAnimation 的 animationDidStop 或 CATransaction 的完成块无论 100% 都会被调用。

编辑

尝试了下面的代码,即使我无法使延迟起作用,它也能正常工作。(CACurrentMediaTime()+delay 使第二个动画立即结束)最重要的是,我很高兴即使动画被中断,animationDidStop 总是被调用。(如果用户离开应用程序或同时触发 VC 的动画,则永远不会调用基于块的 UIView 动画的完成块)我很想知道为什么 UIView 动画会发生这种情况以及是否有解决方案。

我应该坚持使用这种方法并尝试修复延迟还是想出其他方法?CAAnimationGroup 在这种情况下不起作用,因为 animationDidStop 在整个组完成时被调用,因此在第一个动画结束时无法调用方法。