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