繁体   English   中英

UIView Swift倾斜动画

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM