Swift 4.2 CAReplicatorLayer的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaojinhai06/article/details/88219437

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个。这样就出现了一个简单的评分控件。运行效果如下图:

评分控件

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

猜你喜欢

转载自blog.csdn.net/yaojinhai06/article/details/88219437