web-dev-qa-db-ja.com

ボタンがクリックされるたびにUIButtonを90度回転する

ボタンがクリックされるたびにUIButtonを90度回転し、回転した各位置/角度を追跡するにはどうすればよいですか?

ここに私がこれまで持っているコードがありますが、一度だけ回転します:

@IBAction func gameButton(sender: AnyObject) {
    UIView.animateWithDuration(0.05, animations: ({
        self.gameButtonLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))
    }))
}
21
nodyor90z
self.gameButtonLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2))

に変更する必要があります

// 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))

CGAffineTransformMake...、新しいトランスフォームを作成し、すでにボタン上にあったトランスフォームを上書きします。既に存在する変換に90度を追加するため(既に0度、90度など、既に回転している場合があります)、現在の変換に追加する必要があります。私が与えたコードの2行目はそれを行います。

23
keithbhunter

スウィフト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
}
11
Eng Yew