添加动画以进行查看

时间:2018-05-01 10:02:54

标签: ios swift xcode animation

我想在我的tableView空白时添加动画。

我有两个单独的图像:

1)一行,
2)风滚草

enter image description here

我认为以这种方式制作动画会很棒:

  

持续10-15秒,只出现一条线,然后从右侧出现风滚草,并在几秒钟内向左侧滚动。

我制作了一个gif并下载了一个框架,允许在UIImageView中显示gif。

它很有效,但质量很差,不像其他一切那么顺畅。

所以我在想,是否有可能在swift本身制作动画?

或者你有什么建议?任何建议都会有所帮助。

由于

1 个答案:

答案 0 :(得分:2)

对于这种动画,你也可以使用这种方法:

  1. 旋转UIImageView
  2. 翻译UIImageView
  3. 的x位置

    以下是旋转UIImageView的扩展(您可以将类从UIImageView更改为UIView):

    extension UIImageView {
        func rotateImage360Degrees(duration: CFTimeInterval = 2) {
            let rotateAnimation                   = CABasicAnimation(keyPath: "transform.rotation")
            rotateAnimation.fromValue             = 0.0
            rotateAnimation.toValue               = CGFloat(Double.pi * 2)
            rotateAnimation.isRemovedOnCompletion = false
            rotateAnimation.duration              = duration
            rotateAnimation.repeatCount           = Float.infinity
            self.layer.add(rotateAnimation, forKey: nil)
        }
    
        func rotateImage360DegreesInReverse(duration: CFTimeInterval = 2) {
            let rotateAnimation                   = CABasicAnimation(keyPath: "transform.rotation")
            rotateAnimation.fromValue             = CGFloat(Double.pi * 2)
            rotateAnimation.toValue               = 0.0
            rotateAnimation.isRemovedOnCompletion = false
            rotateAnimation.duration              = duration
            rotateAnimation.repeatCount           = Float.infinity
            self.layer.add(rotateAnimation, forKey: nil)
        }
    }
    

    UIView.animate块中的翻译动画:

    func animateImageView(){
        UIView.animate(withDuration: 3.0, delay: 0.0, options: ([.curveLinear]), animations: {() -> Void in
            self.yourImageView.transform = CGAffineTransform.init(translationX: self.view.bounds.size.width, y: self.yourImageView.bounds.origin.y)
        }, completion:  { _ in
            self.yourImageView.transform = .identity
            self.animateImageView() // For continuous animation
        })
    }