swift中实现cell中局部播放的动画效果

在cell中

 

 // 播放器动画效果

    private var replicatorLayer:ReplicatorLayer = {

        let layer = ReplicatorLayer.init(frame: CGRect(x: 0, y: 0, width: 2, height: 15))

        return layer

    }()

 

func setUpUI(){

 

 self.replicatorLayer.snp.makeConstraints { (make) in

            make.left.equalToSuperview().offset(10)

            make.bottom.equalToSuperview().offset(-10)

            make.width.equalTo(20)

            make.height.equalTo(10)

        }

}

 

 

左下方

 

 

import UIKit

 

class ReplicatorLayer: UIView {

    

    override init(frame: CGRect) {

        super.init(frame: frame)

        createLayer()

    }

    

    required init?(coder aDecoder: NSCoder) {

        super.init(coder: aDecoder)

    }

    

    func createLayer(){

        let layer = CALayer.init()

        layer.frame = self.bounds

        layer.backgroundColor = UIColor.white.cgColor

        layer.anchorPoint = CGPoint.init(x: 0.5, y: 0.5)

        layer.add(self.scaleYAnimation(), forKey: "scaleAnimation")

        

        let replicatorLayer = CAReplicatorLayer.init()

        replicatorLayer.frame = self.bounds

        

        //设置复制层里面包含子层的个数

        replicatorLayer.instanceCount = 4

        

        //设置子层相对于前一个层的偏移量

        replicatorLayer.instanceTransform = CATransform3DMakeTranslation(5, 0, 0)

        

        //设置子层相对于前一个层的延迟时间

        replicatorLayer.instanceDelay = 0.2

        

        //设置层的颜色,(前提是要设置层的背景颜色,如果没有设置背景颜色,默认是透明的,再设置这个属性不会有效果。

        replicatorLayer.instanceColor = DominantColor.cgColor

        

        //需要把子层加入到复制层中,复制层按照前面设置的参数自动复制

        replicatorLayer.addSublayer(layer)

        

        //将复制层加入view的层里面进行显示

        self.layer.addSublayer(replicatorLayer)

    }

}

 

extension ReplicatorLayer {

    fileprivate func scaleYAnimation() -> CABasicAnimation{

        let anim = CABasicAnimation.init(keyPath: "transform.scale.y")

        anim.toValue = 0.1

        anim.duration = 0.4

        anim.autoreverses = true

        anim.repeatCount = MAXFLOAT

        anim.isRemovedOnCompletion = false

        return anim

    }

}

转载于:https://www.cnblogs.com/sundaysme/p/10613114.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值