Ios Xcode:如何在CATTransaction中进行线性动画
我的交易开始慢,变得快,然后变慢。 我需要直线速度 我发现Ios Xcode:如何在CATTransaction中进行线性动画,ios,objective-c,animation,core-animation,Ios,Objective C,Animation,Core Animation,我的交易开始慢,变得快,然后变慢。 我需要直线速度 我发现UIViewAnimationOptionCurveLinear,但找不到[CATTransaction begin] 这是我的密码: [ CATransaction begin ]; if( graph_animation_enable ) [CATransaction setAnimationDuration: graph_animation_seconds ]; else [CATr
UIViewAnimationOptionCurveLinear
,但找不到[CATTransaction begin]
这是我的密码:
[ CATransaction begin ];
if( graph_animation_enable )
[CATransaction setAnimationDuration: graph_animation_seconds ];
else
[CATransaction setAnimationDuration: 0 ];
//[CATransaction setValue : ( id ) kCFBooleanTrue forKey : kCATransactionDisableActions];
graph_CALayer.frame = CGRectMake( left_x, top_y, width, height );
graph_CALayer.backgroundColor = bar_background_color.CGColor;
CAMediaTimingFunction *linearTiming =
[CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear];
[CATransaction setAnimationTimingFunction: linearTiming];
[CATransaction commit];
我尝试了答案,但仍然是非线性的。
动画开始,但随后变慢。使用
CATTransaction
setAnimationTimingFunction
和kCAMediaTimingFunctionLinear的计时值
代码如下所示:
CAMediaTimingFunction *linearTiming =
[CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear];
[CATransaction setAnimationTimingFunction: linearTiming]
使用CATTransaction
设置动画计时功能
和kCAMediaTimingFunctionLinear的计时值
代码如下所示:
CAMediaTimingFunction *linearTiming =
[CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear];
[CATransaction setAnimationTimingFunction: linearTiming]
对于Swift 5,CATransaction
有一个名为的方法<代码>设置动画计时功能(:)
具有以下声明:
class func setAnimationTimingFunction(_ function: CAMediaTimingFunction?)
设置用于此事务组中所有动画的计时功能。[…]这是一种方便的方法,可以为kCATransactionAnimationTimingFunction
键的值(forKey:)
值设置CAMediaTimingFunction
因此,您可以使用以下代码片段之一为
CATTransaction
设置线性动画:
CATransaction.begin()
CATransaction.setAnimationTimingFunction(CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear))
/* ... */
CATransaction.commit()
对于Swift 5,
CATransaction
有一个名为的方法<代码>设置动画计时功能(:)具有以下声明:
class func setAnimationTimingFunction(_ function: CAMediaTimingFunction?)
设置用于此事务组中所有动画的计时功能。[…]这是一种方便的方法,可以为kCATransactionAnimationTimingFunction
键的值(forKey:)
值设置CAMediaTimingFunction
因此,您可以使用以下代码片段之一为
CATTransaction
设置线性动画:
CATransaction.begin()
CATransaction.setAnimationTimingFunction(CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear))
/* ... */
CATransaction.commit()
我在发布的代码的第一个版本中出错。检查编辑的版本,该版本确实使用了
linearTiming
.Hmm。仍然不是线性的:先快后慢。编辑您的问题以显示最新的代码。(它仍然需要在[CATransaction begin]
和[CATransaction commit]
中)让我们看看。我在发布的第一个版本的代码中出错了。检查编辑的版本,该版本确实使用了linearTiming
.Hmm。仍然不是线性的:先快后慢。编辑您的问题以显示最新的代码。(它仍然需要位于[CatTransaction begin]
和[CatTransaction commit]
中)让我们来看看。在更改图层属性之前,必须更改事务的属性。另外,frame
在CALayer
中不是可设置动画的属性。在更改图层属性之前,必须更改事务的属性。另外,frame
在CALayer
中不是可设置动画的属性。