因为需求需要做一个多个点形成的多个环形的view去展示电量,所以想法是使用CAReplicatorLayer复制层去实现
一开始做的想法当然是第一步去把点全部点好。
- (void)createDotLayer{
CALayer * layer = [[CALayer alloc]init];
layer.frame=CGRectMake(0,0,300,300);
layer.backgroundColor = UIColor.clearColor.CGColor;
layer.position = self.layer.position;
for (int i = 0; i < self.dotCount; i++) {
CAReplicatorLayer*itemLayer = [self getImageItemView];
// 根据业务需要在适合的地方把layerArr的itemLayer拿出来去设置颜色即可
[self.layerArr addObject:itemLayer];
[layer addSublayer:itemLayer];
CATransform3D transform = CATransform3DIdentity;
transform =CATransform3DRotate(transform, i *M_PI*2.0/self.dotCount,0,0,1);
itemLayer.transform= transform;
}
[self.layer addSublayer:layer];
}
- (void)getImageItemView{
UIView *dotView = [[UIView alloc]initWithFrame:CGRectMake(x, y, viewWH, viewWH)];//这个是最大值
dotView.backgroundColor = UIColor.whiteColor;
dotView.layer.cornerRadius=viewWH*0.5;
CAReplicatorLayer *replLayer = [CAReplicatorLayer layer];
[replLayer addSublayer:dotView.layer];
replLayer.backgroundColor = UIColor.clearColor.CGColor;
replLayer.frame=CGRectMake(0,0,self.sumLayerWH,self.sumLayerWH);//这个是其大小
replLayer.position=CGPointMake(self.sumLayerWH*0.5,self.sumLayerWH*0.5);//中心点
replLayer.instanceColor = UIColor.whiteColor.CGColor;
/// 设置复制次数
replLayer.instanceCount=count;
CATransform3D transform = CATransform3DIdentity;
// 偏移
transform =CATransform3DTranslate(transform,offX,offY,0);
// 缩放
transform =CATransform3DScale(transform,Scale,Scale,0);
//旋转
transform =CATransform3DRotate(transform, -0.1,0,0, -1);
replLayer.instanceTransform= transform;
return replLayer;
}
如果需要设置动画的小伙伴,在layer层上添加动画即可
下面直接上效果图, 记录一下,小白iOS,有什么不对的请见谅~
网友评论