首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UIView动画跳过第一个动画

UIView动画跳过第一个动画
EN

Stack Overflow用户
提问于 2015-01-15 01:33:08
回答 2查看 663关注 0票数 0

很新的这件事对不起!

一旦我运行,按下“按”UIView的背景色“背景”立即变成蓝色,然后动画变成紫色,完全跳过动画到黄色,然后变成蓝色。

我做错了什么?

代码语言:javascript
复制
  @IBAction func Press(sender: AnyObject) {

UIView.animateWithDuration(5, animations: {
self.Background.backgroundColor = UIColor.yellowColor()
self.Background.backgroundColor = UIColor.blueColor()
self.Background.backgroundColor = UIColor.purpleColor()
}, completion:{(Bool)  in
println("COLOR CHANGED")
})
}
EN

Stack Overflow用户

回答已采纳

发布于 2015-01-15 01:42:24

在一个单一的调用中,不能将多个状态的更改为相同的属性。它将只是动画到最后的状态变化(如在您的情况下)。相反,您可以使用completionBlock将它们链接在一起。

代码语言:javascript
复制
UIView.animateWithDuration(5/3.0, animations: {

    self.view.backgroundColor = UIColor.yellowColor()

    }, completion:{ finished1 in
        UIView.animateWithDuration(5/3.0, animations: {

            self.view.backgroundColor = UIColor.blueColor()

            }, completion:{finished2  in
                UIView.animateWithDuration(5/3.0, animations: {

                    self.view.backgroundColor = UIColor.purpleColor()

                    }, completion:{finished3  in

                        println("COLOR CHANGED")
                })
        })
})

或者您可以使用关键帧动画,指定中间帧,如下所示。relativeDuration应该是0到1之间的值,指示一个关键帧的相对持续时间。例如,如果整个动画是3 seconds,而relativeDuration是(1/3),那么该关键帧将为3/3 = 1第二代动画。

relativeStartTime也是关键帧相对于整个动画的持续时间开始的相对时间。例如,如果整个动画是3 seconds,而relativeStartTime是(1/3),那么关键帧将在1 second之后启动。

代码语言:javascript
复制
var duration = 5.0;
var relativeDuration = 1.0/3;

UIView.animateKeyframesWithDuration(duration, delay: 0, options: nil, animations: {
    UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: relativeDuration, animations: {
        self.view.backgroundColor = UIColor.yellowColor()
    })
    UIView.addKeyframeWithRelativeStartTime(relativeDuration, relativeDuration: relativeDuration, animations: {
        self.view.backgroundColor = UIColor.blueColor()
    })
    UIView.addKeyframeWithRelativeStartTime(2 * relativeDuration, relativeDuration: relativeDuration, animations: {
        self.view.backgroundColor = UIColor.purpleColor()

    })
    }, completion:nil);
票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27955494

复制
相关文章

相似问题

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