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];
  • 相关阅读:
    【转载】高内聚低耦合
    【转载】locate命令的使用
    【转载】C内存对齐
    【原创】_INTSIZEOF 内存按照int对齐
    【转载】free查看内存
    Hive查询Join
    Hive数据查询
    Hive导入数据
    Hive表的修改Alter
    Hive中排序和聚集
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5104391.html
Copyright © 2011-2022 走看看