2016-04-23 235 views
3

我有一個像下拉的圖像。最初它會看起來像下拉圖像所以當用戶按下拉列表時,會顯示一些選項。所以我需要的是,當下拉是真實的。我的意思是,當用戶按下下拉圖像,當選項列表顯示時,我需要顯示下拉的圖像180度。像是當下拉是假的需要將圖像顯示爲正常位置。將圖像旋轉180度

這種方式是正確的,而不是使用一個更多的圖像?我使用SWIFT 2.2

更新時間:

@IBAction func dropBtnPress(sender: AnyObject) { 

      if dropDown.hidden { 
       dropDown.show() 
       UIView.animateWithDuration(0.0, animations: { 
        self.image.transform = CGAffineTransformMakeRotation((180.0 * CGFloat(M_PI))/180.0) 
       }) 
      } else { 
       dropDown.hide() 
    //   UIView.animateWithDuration(2.0, animations: { 
    //    self.image.transform = CGAffineTransformMakeRotation((180.0 * CGFloat(M_PI))/-180.0) 
    //   }) 
      } 
     } 

    } 
+1

'(180 * X)/ 180 = x'下降(180.0 * CGFloat(M_PI))/ 180.0',並使用CGFloat(M_PI)' – Fogmeister

回答

14

旋轉圖像,你可以使用這個片段:

UIView.animateWithDuration(2.0, animations: { 
    self.imageView.transform = CGAffineTransformMakeRotation(CGFloat(M_PI)) 
}) 

可以調整動畫秒(目前爲2.0)。

要設置圖像再次使用下面的代碼:

UIView.animateWithDuration(2.0, animations: { 
    self.imageV.transform = CGAffineTransform.identity 
}) 

斯威夫特4.x的版本:

旋轉:

UIView.animate(withDuration: 2.0, animations: { 
    self.imageView.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi)) 
}) 

圖像集來的正常狀態:

UIView.animate(withDuration: 2.0, animations: { 
    self.imageView.transform = CGAffineTransform.identity 
}) 
+0

其工作。當我按下時,圖像變爲180度。但是當下拉被隱藏時,它不會改變到正常位置。爲什麼? – user5513630

+0

@ user5513630,檢查更新以使後退按鈕再次工作。 –

3

首先,如果你想旋轉180度,那必須轉化爲弧度。 180度弧度爲pi。 360度將是2 * pi180 * pi會使您的動畫在一秒鐘內旋轉90次,並以原始方向結束。

你可以做這樣的事情,

let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation") 
rotationAnimation.fromValue = 0.0 
rotationAnimation.toValue = M_PI 
rotationAnimation.duration = 1.0 

self.arrowImageView.layer.addAnimation(rotationAnimation, forKey: nil) 

希望這將有助於:)

5

斯威夫特3

UIView.animate(withDuration:0.1, animations: { 
    self.arrowIcon.transform = CGAffineTransform(rotationAngle: (180.0 * CGFloat(Double.pi))/180.0) 
})