zoukankan      html  css  js  c++  java
  • CABasicAnimation属性动画的基本用法

    ---恢复内容开始---

    初始化一个按钮

    lazy var loginButton = UIButton()  //懒加载属性
    //设置 loginButton 按钮属性
    func  setupUI() {
            loginButton.frame =  CGRect(x: 20, y: 230,  view.frame.width - 20 * 2, height: 30)
            loginButton.backgroundColor = UIColor.cyan
            loginButton.setTitle("登录", for: [])
            view.addSubview(loginButton)
    }
    

     

    添加一个位置动画

    let animation = CABasicAnimation() // 属性
    /// MARK: - 位置动画
    func positionAnimation() { animation.keyPath = "position" //设置动画实例对象的效果
            
            let positionX = loginButton.frame.origin.x + 0.5 * loginButton.frame.size.width
            
            let positionY = loginButton.frame.origin.y + 0.5 * loginButton.frame.size.height + 100
            
            /// 使loginButton 按钮向下平移100
            animation.toValue = NSValue(cgPoint: CGPoint(x: positionX, y: positionY))

            animation.duration = 2.0  //动画执行周期

            /// 保持动画结束之后的状态
            animation.fillMode = kCAFillModeForwards
            animation.isRemovedOnCompletion = false
            
            loginButton.layer.add(animation, forKey: nil) //添加动画到layer层 }

     添加一个缩放动画

    func scaleAnimation() {
    
            animation.keyPath = "transform.scale.x" //设置动画实例对象的效果
        
            animation.fromValue = 1.0
            animation.toValue = 0.8
            
            animation.duration = 2.0  //动画执行周期
            
            //保持动画结束之后的状态
            animation.fillMode = kCAFillModeForwards
            animation.isRemovedOnCompletion = false
            
            loginButton.layer.add(animation, forKey: nil) //添加动画到layer层
            
        }
    

    添加一个旋转动画

    func rotationAnimation() {
            
            animation.keyPath = "transform.rotation" //设置动画实例对象的效果
            
            animation.toValue = 3.14 / 2  //旋转角度,可以使用 M_PI之类的
            
            animation.duration = 2.0  //动画执行周期
            
            //保持动画结束之后的状态
            animation.fillMode = kCAFillModeForwards
            animation.isRemovedOnCompletion = false
            
            loginButton.layer.add(animation, forKey: nil) //添加动画到layer层
            
        }
    

    添加一个淡入淡出动画

    func opacityAnimation() {
            // Opacity 属性和alpha属性类似,通过设置 0~1.0的浮点数字可以实现透明效果,默认值为0,表示初试状态为隐藏
            animation.keyPath = "opacity" //设置动画实例对象的效果
            
            animation.fromValue = UIColor.cyan.cgColor
            
            animation.toValue = 1.0
            
            animation.duration = 5.0  //动画执行周期
            
            //保持动画结束之后的状态
            animation.fillMode = kCAFillModeForwards
            animation.isRemovedOnCompletion = false
            
            loginButton.layer.add(animation, forKey: nil) //添加动画到layer层
            
        }
    

     添加一个阴影渐变动画

    func shadowOpacityAnimation() {
            
            //阴影渐变
            loginButton.layer.shadowColor = UIColor.red.cgColor
            loginButton.layer.shadowOpacity = 0.5
            
            animation.keyPath = "shadowOffset" //设置动画实例对象的效果
            
            animation.toValue = NSValue(cgSize: CGSize( 0, height: 3))
            
            animation.duration = 2.0  //动画执行周期
            
            //保持动画结束之后的状态
            animation.fillMode = kCAFillModeForwards
            animation.isRemovedOnCompletion = false
            
            loginButton.layer.add(animation, forKey: nil) //添加动画到layer层
            
        }
    

    以上只是部分使用部分属性完成了最基本的属性动画,当然还有更多的属性 比如颜色,边框,圆角等等属性可以使用,最主要的就是通过改变keyPath来实现,就不一一作介绍了。

  • 相关阅读:
    上古神器之Vim编辑器
    Git
    Git
    php之IP
    PHP常见错误汇总
    Redis教程(Windows)
    如何使用RSS
    (转)Spring Boot干货系列:(三)启动原理解析
    (转)Maven创建webapp项目无法修改web版本的问题
    (转)图文详解MyEclipse中新建Maven webapp项目的步骤
  • 原文地址:https://www.cnblogs.com/metersj/p/7064018.html
Copyright © 2011-2022 走看看