我花了我的火鸡日试图建立一个翻转动画类,我已经挣扎了几个星期。
目标是:
反复翻转两个图像,首先快速,然后减速并停止,在动画开始前选择的两个图像中的一个图像上着陆。
现在这两个图像都在容器视图中,在故事板中。我试过用transitionFromView transitionFlipFromTop
这个方法,我想可以,但当时我无法让它重复。
我正在阅读视图编程指南,但是很难把它和swift之间的点联系起来。一般来说,刚开始编程并没有帮助。
这里是我的位置:我现在使用CATransform
将图像从零高度缩放到全高度。我在想,如果我能以某种方式链接两个动画,第一个显示第一个图像放大,然后回到零,然后动画第二个图像做同样的事情,这应该给我第一部分。然后,如果我能让这两个动画重复,首先快速,然后减速和停止。
似乎我需要知道如何嵌套多个动画,然后能够将动画曲线应用到嵌套动画。
我计划通过两个嵌套动画来解决有关在特定图像上着陆的部分,其中一个动画的翻转次数为奇数,另一个动画的翻转次数为偶数。根据所需的最终图像,调用相应的动画。
现在,我的当前代码能够重复地将图像从零缩放到满,次数是:
import UIKit
import QuartzCore
let FlipAnimatorStartTransform:CATransform3D = {
let rotationDegrees: CGFloat = -15.0
let rotationRadians: CGFloat = rotationDegrees * (CGFloat(M_PI)/180.0)
let offset = CGPointMake(-20, -20)
var startTransform = CATransform3DIdentity
startTransform = CATransform3DScale(CATransform3DMakeRotation(0, 0, 0, 0),
1, 0, 1);
return startTransform
}()
class FlipAnimator {
class func animate(view: UIView) {
let viewOne = view
let viewTwo = view
viewOne.layer.transform = FlipAnimatorStartTransform
viewTwo.layer.transform = FlipAnimatorStartTransform
UIView.animateWithDuration(0.5, delay: 0, options: .Repeat, {
UIView.setAnimationRepeatCount(7)
viewOne.layer.transform = CATransform3DIdentity
},nil)
}
}
我会继续努力的。任何帮助,想法,或暗示更好的方式去做这件事将是惊人的。
谢谢。
最佳答案
这个翻转动画swift代码看起来稍微好一点:
let transition = CATransition()
transition.startProgress = 0;
transition.endProgress = 1.0;
transition.type = "flip";
transition.subtype = "fromRight";
transition.duration = 0.9;
transition.repeatCount = 2;
self.cardView.layer.addAnimation(transition, forKey: " ")
另一个选择是
@IBOutlet weak var cardView: UIView!
var back: UIImageView!
var front: UIImageView!
self.front = UIImageView(image: UIImage(named: "heads.png"))
self.back = UIImageView(image: UIImage(named: "tails.png"))
self.cardView.addSubview(self.back)
UIView.transitionFromView(self.back, toView: self.front, duration: 1, options: UIViewAnimationOptions.TransitionFlipFromRight , completion: nil)
请检查link