Rotating a UIButton by 90 degrees every time the button is clicked

后端 未结 2 829
攒了一身酷
攒了一身酷 2021-02-07 01:22

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

相关标签:
2条回答
  • 2021-02-07 01:29
    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.

    0 讨论(0)
  • 2021-02-07 01:51

    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
    }
    
    0 讨论(0)
提交回复
热议问题