使用CAReplicatorLayer点图

2020-11-16  本文已影响0人  able要爆了

因为需求需要做一个多个点形成的多个环形的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,有什么不对的请见谅~

上一篇下一篇

猜你喜欢

热点阅读