将图像旋转180度

时间:2016-04-23 06:43:46

标签: ios swift

我有一张像下拉的图像。最初它看起来像下拉图像所以当用户按下拉列表时,会显示一些选项。所以我需要的是,当下拉是真的时候。我的意思是当用户按下下拉图像时,当选项列表显示下来时,我需要将下拉图像显示为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)
    //            })
            }
        }

    }

3 个答案:

答案 0 :(得分:37)

要旋转图片,您可以使用此代码段:

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

您可以调整动画秒数(当前为2)。

要重新设置图像,请使用以下代码:

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

Swift 4.x版本:

旋转:

UIView.animate(withDuration: 2) {
    self.imageView.transform = CGAffineTransform(rotationAngle: .pi)
}

将图像设置为正常状态:

UIView.animate(withDuration: 2) {
    self.imageView.transform = CGAffineTransform.identity
}

答案 1 :(得分:5)

Swift 3

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

答案 2 :(得分:4)

首先,如果要旋转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)

希望这会有所帮助:)