我有一个对象,我正试图动画滚动屏幕。我不知道如何改变物体的位置并让它旋转得比现在多。这就是我到目前为止所做的:
@IBOutlet weak var quarterImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
UIView.animateWithDuration(8.0, animations: {
let angle = CGFloat(-4000)
let rotate = CGAffineTransformMakeRotation(angle)
self.quarterImage.transform = CGAffineTransformMakeRotation(angle)
})
}
任何帮助都会很棒。谢谢!
答案 0 :(得分:1)
我正在使用一些反复跳跃的笑脸图像的弹跳动画。 这是代码,以便您可以了解更改位置。 对于旋转,我猜你需要使用不同的角度PI值来进行平滑旋转。
UIView.animateWithDuration(0.6, delay: 0.3, options: [UIViewAnimationOptions.Autoreverse, UIViewAnimationOptions.Repeat, UIViewAnimationOptions.CurveEaseOut], animations:
{
self.m_smileyImgView?.transform.ty -= 30;
},completion: nil);
答案 1 :(得分:0)
CGAffineTransformMakeRotation
可能有点棘手
首先,它需要以弧度为单位的度数
其次,超过2PI的值并不重要(0 = 2PI = 6PI = 10000PI)
以下是将图像旋转360度
的示例功能func rotateImage(times times:Int) {
if times == 0 { return }
UIView.setAnimationCurve(.Linear)
UIView.animateKeyframesWithDuration(1, delay: 0, options: .CalculationModeLinear, animations: {
UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 1/3, animations: {
self.imageView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI * 2/3))
})
UIView.addKeyframeWithRelativeStartTime(1/3, relativeDuration: 1/3, animations: {
self.imageView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI * 4/3))
})
UIView.addKeyframeWithRelativeStartTime(2/3, relativeDuration: 1/3, animations: {
self.imageView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI * 2))
})
}) { (_) in
self.rotateImage(times: times - 1)
}
}
如果要在旋转时移动对象,可以通过添加此关键帧来更改其位置
UIView.addKeyframeWithRelativeStartTime(0, relativeDuration: 1.0, animations: {
self.imageView.center.x += 50
})