gpt4 book ai didi

ios - 多个 UIView 动画

转载 作者:行者123 更新时间:2023-11-28 10:01:50 25 4
gpt4 key购买 nike

我有一个 UIButton,我已使用 Interface Builder 将其放置在屏幕中央。

我想为 UIButton 制作动画以上下移动并永远重复动画。

到目前为止,我的 didMoveToView 中有这个:

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。

最佳答案

您不能同时将变换更改为多个事物。我希望您的代码根本不会产生任何动画,因为不止一次更改变换会取消动画。

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

还有一个问题是您永远不会将按钮带回到它的起始位置;转换不是相加的。

您需要做的是将动画链接在一起。如果您下拉到 Core Animation 并制作分组动画,这将是最简单的。

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

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)

但实际上,如果您在涉足此类领域之前了解动画的实际工作原理会更好。从你的代码来看,在我看来你只是在颠簸。

关于ios - 多个 UIView 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27391679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com