[英]UIView Swift Tilting Animation
我有一个UIImageView,我想让它在我调用一个函数时,图像从平坦状态(正常状态)变为向右旋转(例如可能旋转20度),然后再回到平坦状态(正常)状态。
这是我目前拥有的,但是我无法获得理想的结果。
extension UIView {
func rotate(duration: CFTimeInterval = 2) {
let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
rotateAnimation.fromValue = 0.0
rotateAnimation.toValue = CGFloat(20)
rotateAnimation.isRemovedOnCompletion = true
rotateAnimation.duration = duration
rotateAnimation.repeatCount=Float.infinity
self.layer.add(rotateAnimation, forKey: nil)
}
}
UIImageView.rotate()
我尝试创建上述动画,并且我尝试过的代码在这里
必填声明
///View Outlet - Image or UIView
@IBOutlet weak var baseView: UIImageView!
/// Timer - To make Animation in repititive State
var newNAimationTimer : Timer?
/// Plus Degree
let degrees : CGFloat = 20.0
/// Minus Degree
let minusDegree : CGFloat = -20.0
计时器功能
//MARK: Start Timer
func startTimer()
{
/// Start timer if Timer is Not Initialised Before
if newNAimationTimer == nil {
/// Assign Timer
newNAimationTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(animationVC.animateView), userInfo: nil, repeats: true)
}
}
//MARK: Stop Timer
func stopTimer()
{
///Check Do timer is Initialised
if newNAimationTimer != nil {
/// Yes Stop
newNAimationTimer?.invalidate()
}
}
计时器处理程序
/// Animate View With Animations
@objc func animateView()
{
let plusRadian : CGFloat = degrees * CGFloat((Double.pi/180))
let minusRadian : CGFloat = minusDegree * CGFloat((Double.pi/180))
/// First Animation To make View Goes clockwise
UIView.animate(withDuration: 0.5, animations: {
self.baseView.transform = CGAffineTransform(rotationAngle: plusRadian)
}) { (success) in
/// Second Animation to make view go antiClockWise
UIView.animate(withDuration: 0.5, animations: {
self.baseView.transform = CGAffineTransform(rotationAngle: minusRadian)
})
}
}
按钮动作
@IBAction func animationButton(_ sender: Any) {
/// Start the Animation
startTimer()
}
屏幕截图
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.