zoukankan      html  css  js  c++  java
  • 【iOS开发-图层】自己定义图层的两种方式

    想要自己定义图层,仅仅须要构建一个类继承CALayer方法

    这里写图片描写叙述

    假设让自己定义图层初始化上面就有画好的图形。有两种办法

    重写drawInContext方法

    自己定义的图层以下的方法。然后必须自己定义的图层对象显示调用
    [layer setNeedsDisplay]然后才会调用这种方法;

    自定图层文件

    - (void)drawInContext:(CGContextRef)ctx {
        CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);//设置红色
    
        CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, 50, 50));//画圆
    
        CGContextFillPath(ctx);
    }

    控制器文件

     TestLayer *layer = [TestLayer layer];
        layer.bounds = CGRectMake(0, 0, 100, 100);
        layer.position = CGPointMake(100, 100);
        layer.anchorPoint = CGPointMake(0, 0);
        layer.backgroundColor = [UIColor blueColor].CGColor;
        layer.cornerRadius = 10;
        [layer setNeedsDisplay];//必须要显示调用这种方法。才会调用上面的那个方法
        [self.view.layer addSublayer:layer];

    使用代理

    首先代理控制器不须要遵循协议。由于这个协议是一个分类。全部的NSObject都实现了

    控制器实现代理的方法

    #pragma marks -实现代理的方法
    - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
        CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);
    
        CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, 50, 50));
    
        CGContextFillPath(ctx);
    }

    调用

    TestLayer *layer = [TestLayer layer];
    layer.bounds = CGRectMake(0, 0, 100, 100);
    layer.position = CGPointMake(100, 100);
    layer.anchorPoint = CGPointMake(0, 0);
    layer.backgroundColor = [UIColor blueColor].CGColor;
    layer.cornerRadius = 10;
    layer.delegate = self;
    [layer setNeedsDisplay];//必须显示调用,不然也不会调用代理的方法
    [self.view.layer addSublayer:layer];
  • 相关阅读:
    最优比率环 SPFA+二分
    严格次小生成树
    SPFA判断负环BFS+DFS
    poj 1149 PIGS 网络流-最大流 建图理解
    9.20开始的停课日常
    Speed
    [BZOJ4827][Hnoi2017]礼物(FFT)
    中山纪念中学集训日志
    [POJ1151][HDU1542]Atlantis(线段树,扫描线)
    [BZOJ2002][洛谷P3203][Hnoi2010]Bounce 弹飞绵羊(LCT维护链长)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5104391.html
Copyright © 2011-2022 走看看