我有一个旋转瓶子的应用程序。 当有人点击按钮时,瓶子会旋转。
就像现在的代码一样,瓶子将旋转10次,然后以0到360之间的随机度停止。但我希望瓶子能够顺畅地旋转并且平稳地停止,而不仅仅是停止常数。我希望瓶子旋转得越来越慢。
代码:
func rotateRandom(){
let diceRoll = CGFloat(arc4random_uniform(360))
let degree = 0.0174532925 as CGFloat
let rotate = diceRoll
UIView.animateWithDuration(0.5, delay: 0.0, options: UIViewAnimationOptions.CurveLinear, animations: { () -> Void in
self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, rotate)
}, completion: nil)
//println(diceRoll)
}
func rotateLeft(){
UIView.animateWithDuration(3, delay: 0.0, options: UIViewAnimationOptions.CurveLinear, animations: { () -> Void in
self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, -180 * 0.0174532925)
//self.imageView.transform = CGAffineTransformMakeRotation(360)
}, completion: nil)
rotateRandom()
}
这里有什么建议吗?我还想要一个瓶子停止时的功能。所以我可以在瓶子停止时添加一个弹出窗口。
答案 0 :(得分:1)
我会将变换值设为属性,然后让计时器增加变换值并将变换应用于单个图像。当需要减速时,使增量越来越小,直到停止它为止。
使用arc4ran_uniform()
作为随机停止时间。
答案 1 :(得分:0)
这可能会有所帮助:http://markmanx.com/?p=33
正如JoshStrange上面提到的,你会想要考虑放松。使用缓动功能,您可以设置旋转动画,使其随时间平滑减速。在Greensock,它就像写
之类的东西一样简单Tween.to(elementToAnimate,2seconds,{rotate:360,easing:Cubic.easeOut})
我不是Swift开发人员,但是这个人创建了一个缓动函数库,可以为您提供相同的功能: