2016-05-01 144 views
4

我正在建設示例約FloatingButton旋轉圖像-45度

但我有一些旋轉圖像的麻煩。我希望它旋轉這樣的鏈接

https://github.com/yoavlt/LiquidFloatingActionButton

但我的按鈕是:

enter image description here

正如你可以看到,當我點擊了第一次,它運行良好:d,它像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。這是它原來的轉變。當您設置變換時,無論當前角度是多少,都要告訴它要旋轉的絕對角度。

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 = CGAffineTransform(rotationAngle: CGFloat(Double.pi)) 

用於返回到默認位置:

self.yourLayerName.transform = .identity 

爲了改變旋轉角度可以乘以或「pi」號。

45" 旋轉:

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