Im running a project, that makes an image of a bottle spin around. Just like the game "bottleneck". It actually works great, but its just way to often, that the image stops on the same position. I would like to make a new position every time at least 45 degrees from the last position. My code looks like this
for _ in 1...10 {
UIView.animateWithDuration(2, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 0, options: [],
animations: { [unowned self] in
self.bottleImage.transform = CGAffineTransformMakeRotation(CGFloat(M_PI))
}){ [unowned self] (finished: Bool) in
self.bottleImage.hidden = false
}
UIView.animateWithDuration(8, delay: 0, usingSpringWithDamping: 1, initialSpringVelocity: 0, options: [],
animations: { [unowned self] in
self.bottleImage.transform = CGAffineTransformMakeRotation(CGFloat(M_PI * 2))
}){ [unowned self] (finished: Bool) in
self.bottleImage.hidden = false
}
}
//Random stop point
let randomNumber: CGFloat = CGFloat(arc4random_uniform(360))
UIView.animateWithDuration(2, delay: 0, usingSpringWithDamping: 5, initialSpringVelocity: 5, options: [],
animations: { [unowned self] in
self.bottleImage.transform = CGAffineTransformMakeRotation(CGFloat(randomNumber))
}){ [unowned self] (finished: Bool) in
self.bottleImage.hidden = false
}
FINAL EDIT
var currentPosition: CGFloat = 0.0
/*
First spins...
*/
//Random stop point
let randomNumber: CGFloat = CGFloat(arc4random_uniform(270))
currentPosition = CGFloat(Int(currentPosition + 45 + randomNumber) % 360)
UIView.animateWithDuration(1, delay: 0, usingSpringWithDamping: 5, initialSpringVelocity: 2, options: [],
animations: { [unowned self] in
self.bottleImage.transform = CGAffineTransformMakeRotation(self.currentPosition / 180 * CGFloat(M_PI))
}){ [unowned self] (finished: Bool) in
self.bottleImage.hidden = false
}