• 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来实现,就不一一作介绍了。

  • 相关阅读:
    Atomikos 中文说明文档(周枫翻译) 东师理想
    flex手机项目嵌套html页面和html页面播放声音文件 东师理想
    sql server 创建 ASPState 数据库方法 东师理想
    Android中文API(博客翻译版转载) 东师理想
    sql server导入excel和多表关联更新 东师理想
    关于CSS样式zindex在firefox和平板电脑中的问题 东师理想
    使用Flash builder 4.6创建Flex手机项目读取XML文件方法 东师理想
    android动画切换(滑屏效果)实例 东师理想
    一个障碍,就是一个超越自我的契机(转载)
    多去阅读思维训练类的书籍(转载)
  • 原文地址:https://www.cnblogs.com/metersj/p/7064018.html
Copyright © 2020-2023  润新知