动画--简单方法

作者: iOS_July | 来源:发表于2018-06-11 10:40 被阅读9次

    一、animate方法

    它位于UIView类中

    UIView.animate(withDuration:  ,
     delay:  ,
     usingSpringWithDamping: ,
     initialSpringVelocity:  ,
     options:  ,
     animations: <() -> Void>,
     completion:() -> Void)
    

    它是每一个动画的基础

    二、动画定义

    动画是用快速显示一系列静态图片(帧)来模拟动作和图形转换的过程。
    动画是物体移动或者尺寸变化的“幻影”
    首帧[第一帧]--->第二帧--->第三帧--->尾帧

    三、如何生成这么多的帧数?

    只需在UIView.animate中指定首帧和尾帧,其他的系统会帮我们自动计算。

    四、如何改变动画尺寸呢?

    transform函数集 > 缩放、旋转和移动视图

    @ 缩放:
    //一开始不显示
    RatingStackView.transform = CGAffineTransform(scaleX: 0, y: 0)
    
    @ 移动:
    RatingStackView.transform = CGAffineTransform(translationX: 0, y: 500)
    
    override func viewDidAppear(_ animated: Bool) {
          
            UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.5, options: [], animations: {)
                self.RatingStackView.transform = CGAffineTransform(translationX: 0, y: 0)
            }, completion: nil)
        }
    
    @ 动画组合:
    let startPos = CGAffineTransform(translationX: 0, y: 500)
    let startScale = CGAffineTransform(scaleX: 0, y: 0)
    RatingStackView.transform = startScale.concatenating(startPos)
    
     override func viewDidAppear(_ animated: Bool) {
    
            UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.5, options: [], animations: {
                let endPos = CGAffineTransform(translationX: 0, y: 0)
                let endScale = CGAffineTransform.identity
                self.RatingStackView.transform = endPos.concatenating(endScale)
            }, completion: nil)
        }
    
    注意:
    这里动画的 首帧设置 和 尾帧设置 需要按照AB BA的方式排列
    不能以ABAB的方式排列,否则只会执行B的动画
    

    五、设置动画启动时机和时长

    选择在当视图每一次显示完毕的时候,即在viewDidAppear加入:

    override func viewDidAppear(_ animated: Bool) {
            UIView.animate(withDuration: 0.3) {
                //显示视图原来的样子
                self.RatingStackView.transform = CGAffineTransform.identity
            }
        }
    

    六、补充动画效果

    Damping:达到尾帧之前的震荡摆动效果和时间
    initialSpringVelocity:初识速度
    自iOS7开始有的,可把动画方法替换成

    UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.5, options: [], animations: {
                self.RatingStackView.transform = CGAffineTransform.identity
            }, completion: nil)
    
    补充KVC
    Key Path Type Value
    layer.cornerRadius Number 20

    相关文章

      网友评论

        本文标题:动画--简单方法

        本文链接:https://www.haomeiwen.com/subject/sunpsftx.html