How do you rotate a UIButton by 90 degrees each time the button is clicked and also keep track of each rotated position/angle?
Here is the code I have so far but it only
self.gameButtonLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
Should be changed to
// Swift 3 - Rotate the current transform by 90 degrees.
self.gameButtonLabel.transform = self.gameButtonLabel.transform.rotated(by: CGFloat(M_PI_2))
// OR
// Swift 2.2+ - Pass the current transform into the method so it will rotate it an extra 90 degrees.
self.gameButtonLabel.transform = CGAffineTransformRotate(self.gameButtonLabel.transform, CGFloat(M_PI_2))
With CGAffineTransformMake...
, you create a brand new transform and overwrite any transform that was already on the button. Since you want to append 90 degrees to the transform that already exists (which could be 0, 90, etc degrees rotated already), you need to add to the current transform. The second line of code I gave will do that.
Swift 4:
@IBOutlet weak var expandButton: UIButton!
var sectionIsExpanded: Bool = true {
didSet {
UIView.animate(withDuration: 0.25) {
if self.sectionIsExpanded {
self.expandButton.transform = CGAffineTransform.identity
} else {
self.expandButton.transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2.0)
}
}
}
}
@IBAction func expandButtonTapped(_ sender: UIButton) {
sectionIsExpanded = !sectionIsExpanded
}