CABasicAnimation属性动画的基本用法

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

初始化一个按钮
lazy var loginButton = UIButton()  //懒加载属性
//设置 loginButton 按钮属性
func  setupUI() {
        loginButton.frame =  CGRect(x: 20, y: 230, width: 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(width: 0, height: 3))
        
        animation.duration = 2.0  //动画执行周期
        
        //保持动画结束之后的状态
        animation.fillMode = kCAFillModeForwards
        animation.isRemovedOnCompletion = false
        
        loginButton.layer.add(animation, forKey: nil) //添加动画到layer层
        
    }

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

 

转载于:https://www.cnblogs.com/metersj/p/7064018.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值