Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.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 多个UIView动画_Ios_Xcode_Swift_Uiview_Uiviewcontroller - Fatal编程技术网

Ios 多个UIView动画

Ios 多个UIView动画,ios,xcode,swift,uiview,uiviewcontroller,Ios,Xcode,Swift,Uiview,Uiviewcontroller,我有一个UIButton,我使用interface builder将它放在屏幕中央 我想设置UIButton的动画,使其上下移动,并永远重复动画 到目前为止,我在didMoveToView中有这样一个观点:我正在使用swift UIView.animateWithDuration(3, animations: { () -> Void in self.playBtn.transform = CGAffineTransformMakeTranslation(0, 10)

我有一个UIButton,我使用interface builder将它放在屏幕中央

我想设置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


任何帮助都将不胜感激

您不能同时将转换更改为多个内容。我希望您的代码不会导致任何动画,因为多次更改变换将取消动画

代码的另一个问题是,您所说的不是如何要求重复动画

还有一个问题是,你永远不会把按钮带回到它的起始位置;这些变换不是相加的

您需要做的是将动画链接在一起。这将是最容易的,如果您下拉到核心动画,并使一个分组动画

或者可以通过制作关键帧动画来查看动画;这与您想要的不同,但它会让您开始:

Swift 2

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)
Swift 3,4,5

let opts = UIView.KeyframeAnimationOptions.repeat
UIView.animateKeyframes(withDuration: 3, delay: 0, options: opts, animations: {
    UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: 0.5, animations: {
        self.playBtn.transform = CGAffineTransform(translationX: 0, y: 10)
    })
    UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5, animations: {
        self.playBtn.transform = CGAffineTransform.identity
    })
}, completion: nil)

但事实上,如果你在进入这类领域之前就知道动画是如何工作的,那就更好了。从您的代码中,我觉得您只是在颠簸。

您不能同时将转换更改为多个内容。我希望您的代码不会导致任何动画,因为多次更改变换将取消动画

代码的另一个问题是,您所说的不是如何要求重复动画

还有一个问题是,你永远不会把按钮带回到它的起始位置;这些变换不是相加的

您需要做的是将动画链接在一起。这将是最容易的,如果您下拉到核心动画,并使一个分组动画

或者可以通过制作关键帧动画来查看动画;这与您想要的不同,但它会让您开始:

Swift 2

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)
Swift 3,4,5

let opts = UIView.KeyframeAnimationOptions.repeat
UIView.animateKeyframes(withDuration: 3, delay: 0, options: opts, animations: {
    UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: 0.5, animations: {
        self.playBtn.transform = CGAffineTransform(translationX: 0, y: 10)
    })
    UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5, animations: {
        self.playBtn.transform = CGAffineTransform.identity
    })
}, completion: nil)
但事实上,如果你在进入这类领域之前就知道动画是如何工作的,那就更好了。从你的代码来看,我觉得你只是在捣乱