欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Swift 4.2 CAReplicatorLayer的使用

程序员文章站 2022-04-11 18:15:56
...

CAReplicatorLayer可以按照指定的次数复制自己的子层,并按照指定的方式变换位置、大小、颜色、透明度等。以及动画实现。

我们先看一下CAReplicatorLayer的基本属性,找到CAReplicatorLayer的定义,是继承CALayer,所有具有CALayer的所有特性,那么我们看看他独有的属性。

  • instanceCount 这个是拷贝子层的数量,默认是1,支持动画。

  • preservesDepth 默认是NO,设置为YES,图层将保持于CATransformLayer类似的性质和限制。

  • instanceDelay 延时复制,在一定的时间内复制延时,常用来做动画。默认是0。

  • instanceTransform 相对于上一个位置的变换,当锚点时以CAReplicatorlayer中心点。

  • instanceColor 子层的颜色,默认为白色。

  • instanceRedOffset 相对于上一个的红色偏移量,取值0-1,默认为0。

  • instanceGreenOffset 相对于上一个的绿色偏移量,取值0-1,默认为0。

  • instanceBlueOffset 相对于上一个的蓝色偏移量,取值0-1,默认为0。

  • instanceAlphaOffset 相对于上一个的透明度偏移量,取值0-1,默认为0。

这个是CAReplicatorLayer自己独有的特性,现在我们来实现一个简单的评分控件

    func createRelayer() -> Void {
        let reLayer = CAReplicatorLayer();
        layer.addSublayer(reLayer);
        reLayer.frame = bounds;
        
        let subLayer = CALayer();
        subLayer.frame = CGRect.init(x: 40, y:  40, width: 16, height: 16);
        reLayer.addSublayer(subLayer);
        subLayer.contents = UIImage(named: "wux.png")?.cgImage;
        
        reLayer.instanceCount = 5;
        let cst = CATransform3DMakeTranslation(20, 0, 0)
        reLayer.instanceTransform = cst;
        
        
    }

我们直接创建一个CAReplicatorLayer,然后给他添加一个子Layer,并且给子Layer赋值一个五角星图片,然后按照要求生成5个。这样就出现了一个简单的评分控件。运行效果如下图:

Swift 4.2 CAReplicatorLayer的使用

到这里一个简单的控件已经写好了。奋斗的路上总不会缺少人---努力的人。⛽️⛽️⛽️