首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode:如何在CATransaction中进行线性动画

Xcode:如何在CATransaction中进行线性动画
EN

Stack Overflow用户
提问于 2016-07-26 22:15:30
回答 2查看 1.6K关注 0票数 1

我的交易开始很慢,很快,然后就慢了。我需要线速度。

我找到了UIViewAnimationOptionCurveLinear,但找不到[CATransaction begin]的例子

这是我的代码:

代码语言:javascript
复制
[ 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];

我试过答案,但仍然是非线性的。动画开始,但随后慢下来。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-26 22:42:50

使用CATransaction setAnimationTimingFunctionkCAMediaTimingFunctionLinear的定时值

代码将如下所示:

代码语言:javascript
复制
CAMediaTimingFunction *linearTiming = 
  [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear];
[CATransaction setAnimationTimingFunction: linearTiming]
票数 0
EN

Stack Overflow用户

发布于 2018-07-21 15:42:03

使用Swift 5,CATransaction有一个名为setAnimationTimingFunction(_:)的方法。setAnimationTimingFunction(_:)有以下声明:

代码语言:javascript
复制
class func setAnimationTimingFunction(_ function: CAMediaTimingFunction?)

设置用于此事务组中所有动画的计时函数。..。这是一种方便的方法,可以为CAMediaTimingFunction键的value(forKey:)值设置kCATransactionAnimationTimingFunction

因此,您可以使用以下代码片段之一为CATransaction设置线性动画

代码语言:javascript
复制
CATransaction.begin()
CATransaction.setAnimationTimingFunction(CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear))
/* ... */
CATransaction.commit()
代码语言:javascript
复制
CATransaction.begin()
CATransaction.setValue(CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear), forKey: kCATransactionAnimationTimingFunction)
/* ... */
CATransaction.commit()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38600754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档