2016-08-19 4 views
10

ボタンをクリックするたびにUIButtonを90度回転させ、回転した各位置/角度を追跡する方法を教えてください。ここでボタンをクリックするたびにUIButtonを90度回転させる

は、私がこれまで持っているが、それは一度だけ回転させるコードです:

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

答えて

12
self.gameButtonLabel.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_2)) 

は、トランスフォーム新しいブランドを作成し、上書き、CGAffineTransformMake...

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

に変更する必要があります既にボタン上にあった変換。すでに存在する変換(すでに0度、90度などになる可能性があります)に90度を追加したいので、現在の変換に追加する必要があります。私が与えたコードの2行目はそれを行います。

+0

スウィフト3バージョンがエラーを与える:タイプの値は「CGAffineTransform」はない部材を有していないスイフト2.2以降のバージョンがエラーを与える AND 「を回転」:エキストラ引数に – nodyor90z

+0

うん。どのXcodeベータ版をお使いですか?彼らは私の上ですべてのメソッド名を変更し続けます。私が投稿したコードは、Xcode 8ベータ版のものだと思う。 – keithbhunter

+0

まだXcode 8ベータ版にアップグレードしていない。私は現在Xcode 7.3.1を使用していますが、自分のコードを書くときにXcodeからSwift 3の自動修正提案を受け取ります。 – nodyor90z

0

スイフト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 
} 
関連する問題