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

  • 相关阅读:
    有关同时包含<winsock2.h>与<windows.h>头文件的问题
    如何使用微软提供的TCHAR.H头文件?
    下面的程序在VC6通过,在VS2008不能,错误信息都是“不能将参数……从const char[]转换为LPCWSTR”
    Android开发学习日志(四)
    爬虫开发(一)
    java集合源码详解
    Paxos算法
    linux 常用命令
    Bitmap的原理和应用
    Flink Checkpoint 问题排查实用指南
  • 原文地址:https://www.cnblogs.com/metersj/p/7064018.html
Copyright © 2011-2022 走看看