多个UIView动画

时间:2014-12-10 00:56:17

标签: ios xcode swift uiview uiviewcontroller

我有一个使用界面构建器放置在屏幕中心的UIButton。

我希望动画UIButton上下移动并永远重复动画。

到目前为止,我在didMoveToView中有这个:我正在使用swift。

 UIView.animateWithDuration(3, animations: { () -> Void in
        self.playBtn.transform = CGAffineTransformMakeTranslation(0, 10)
        self.playBtn.transform = CGAffineTransformMakeTranslation(0, -10)
        self.playBtn.transform = CGAffineTransformMakeTranslation(0, -10)
        self.playBtn.transform = CGAffineTransformMakeTranslation(0, 10)
        UIView.setAnimationRepeatCount(-1)
    })

但是它只运行第一行并将按钮向下移动10。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:5)

您无法同时将变换更改为多个内容。我希望您的代码根本不会产生任何动画,因为多次更改变换会取消动画。

你的代码的另一个问题是,你所说的不是你要求重复动画的方式。

还有一个问题是你不会把按钮带回原点;转换不是附加的。

您需要做的是动画。如果您下载到Core Animation并制作分组动画,这将是最简单的。

或者也可以通过做一个关键帧动画来制作视图动画;这与你想要的不一样,但它会让你开始:

let opts = UIViewKeyframeAnimationOptions.Repeat
UIView.animateKeyframesWithDuration(3, delay: 0, options: opts, animations: {
    UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 0.5, animations: {
        self.playBtn.transform = CGAffineTransformMakeTranslation(0, 10)
    })
    UIView.addKeyframeWithRelativeStartTime(0.5, relativeDuration: 0.5, animations: {
        self.playBtn.transform = CGAffineTransformIdentity
    })
}, completion: nil)

但实际上,如果您在进入此类事物之前了解动画的实际效果会更好。从你的代码中,我觉得你只是在吵架。