2016-05-01 18 views
4

私は約のフローティングボタンをビルドしています。イメージを回転する-45度

しかし、私は回転イメージにいくつかの問題があります。それは、D:私は、このリンクのよう

https://github.com/yoavlt/LiquidFloatingActionButton

を回転させるようにしたいしかし、私のボタンがある:

enter image description here

あなたは私が最初にクリックしたときに、それがうまく実行、見ることができるようにxのように変換しますが、もう一度クリックすると+のようにオリジナルに戻したいですが、うまくいきません。

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var floatingButton: UIImageView! 
    var floatingButtonIsActive = false 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     addShadowToFloatingButton() 
     let gesture = UITapGestureRecognizer(target: self, action: #selector(floatingButtonTapped(_:))) 
     floatingButton.addGestureRecognizer(gesture) 
    } 

    private func addShadowToFloatingButton() { 
     floatingButton.layer.shadowColor = UIColor.grayColor().CGColor 
     floatingButton.layer.shadowOffset = CGSize(width: -2, height: 2) 
     floatingButton.layer.shadowOpacity = 1 
     floatingButton.layer.shadowRadius = 1 
    } 

    func floatingButtonTapped(sender: UITapGestureRecognizer) { 

     if floatingButtonIsActive == false { 

      UIView.animateWithDuration(0.5, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 5, options: .CurveEaseInOut, animations: { 
       self.floatingButton.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4)) 
       }, completion: { _ in 
        self.floatingButtonIsActive = true 
      }) 

     } else { 
      UIView.animateWithDuration(0.5, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 5, options: .CurveEaseInOut, animations: { 
       self.floatingButton.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI_4)) 
       }, completion: { _ in 
        self.floatingButtonIsActive = false 
      }) 
     } 
    } 
} 
+0

あなたは再び45度に回転させることができます。同じ効果があります。 self.floatingButton.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4)) –

+0

いいえ、あなたの言ったように動作しません。 – Khuong

答えて

9

作業が完了したときにCGAffineTransformIdentityに変換を設定します。

は、ここに私のコードです。それが元々持っていた変換です。トランスフォームを設定すると、現在の角度に関係なく、変換する絶対角度を指定します。位置をデフォルトに戻るための

self.yourLayerName.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi)) 

func floatingButtonTapped(sender: UITapGestureRecognizer) { 

    if floatingButtonIsActive == false { 

     UIView.animateWithDuration(0.5, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 5, options: .CurveEaseInOut, animations: { 
      self.floatingButton.transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4)) 
      }, completion: { _ in 
       self.floatingButtonIsActive = true 
     }) 

    } else { 
     UIView.animateWithDuration(0.5, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 5, options: .CurveEaseInOut, animations: { 
      self.floatingButton.transform = CGAffineTransformIdentity 
      }, completion: { _ in 
       self.floatingButtonIsActive = false 
     }) 
    } 
} 
0

スウィフト4:180" 回転のための

self.yourLayerName.transform = .identity 

お掛けすることができ、回転角度を変更しますか、分割 "pi"番号

45" の回転のために:

self.yourLayerName.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi/2)) 
関連する問題