Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode:如何在CATTransaction中进行线性动画_Ios_Objective C_Animation_Core Animation - Fatal编程技术网

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
中不是可设置动画的属性。