zoukankan      html  css  js  c++  java
  • swift中实现cell中局部播放的动画效果

    在cell中

     // 播放器动画效果

        private var replicatorLayer:ReplicatorLayer = {

            let layer = ReplicatorLayer.init(frame: CGRect(x: 0, y: 0, 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

        }

    }

  • 相关阅读:
    一本通1273货币系统(方案数背包)
    背包体积循环正序和逆序的区别
    Python字典的底层原理和优缺点
    Linux各目录及每个目录的详细介绍
    openwrt 下python程序后台运行,并将打印信息保存文件
    pycharm同一目录下无法import其他文件
    python sqlite3学习笔记
    python sqlite3查询表记录
    Pycharm快捷键的使用
    Python3 Address already in use 解决方法
  • 原文地址:https://www.cnblogs.com/sundaysme/p/10613114.html
Copyright © 2011-2022 走看看