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个。这样就出现了一个简单的评分控件。运行效果如下图:
到这里一个简单的控件已经写好了。奋斗的路上总不会缺少人---努力的人。⛽️⛽️⛽️