美文网首页
使用CAReplicatorLayer点图

使用CAReplicatorLayer点图

作者: able要爆了 | 来源:发表于2020-11-16 19:23 被阅读0次

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

    相关文章

      网友评论

          本文标题:使用CAReplicatorLayer点图

          本文链接:https://www.haomeiwen.com/subject/ltiibttx.html