zoukankan      html  css  js  c++  java
  • ios中自定义图层的2种方法

    1:自定义图层,在图层中画图

    #import <QuartzCore/QuartzCore.h>
    
    @interface MJLayer : CALayer
    
    @end
    
    #import "MJLayer.h"
    
    @implementation MJLayer
    
    #pragma mark 在这个方法中所画的动画都会显示到MJLayer上面
    - (void)drawInContext:(CGContextRef)ctx {
        // 在这里不能使用跟UIKit相关的东西
        // [[UIColor redColor] set];
        
        CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);
        
        CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, 50, 50));
        CGContextFillPath(ctx);
    }
    
    @end

    ==================================================================

    - (void)diylayer {
    MJLayer *layer = [MJLayer layer];
    layer.frame = CGRectMake(50, 50, 100, 100);
    layer.backgroundColor = [UIColor blueColor].CGColor;
    // 只有调用这个方法才会进行第一次的绘制
    [layer setNeedsDisplay];
    [self.view.layer addSublayer:layer];
    }



    画图使用代理方式

    - (void)diylayer2 {
        CALayer *layer = [CALayer layer];
        layer.frame = CGRectMake(50, 50, 100, 100);
        layer.backgroundColor = [UIColor blueColor].CGColor;
        // 设置代理,让代理帮图层画东西
        layer.delegate = self;
        // 只有调用这个方法才会进行第一次的绘制
        [layer setNeedsDisplay];
        [self.view.layer addSublayer:layer];
    }
    
    #pragma mark 图层的代码方法,在这里帮图层画东西
    // 方法定义在QuartzCore框架中CALayer.h的@interface NSObject (CALayerDelegate)分类
    - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
        CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);
        
        CGContextAddEllipseInRect(ctx, CGRectMake(50, 50, 50, 50));
        CGContextFillPath(ctx);
    }
  • 相关阅读:
    ECMAScript与JavaScript
    AngularJS多模块开发与路由
    ionic调用摄像头
    ionic 打包
    ionic简介
    git---小乌龟提交
    git---控制面板提交
    获取百度网盘真实下载地址
    js高级---本地对象、内置对象、宿主对象
    js高级---js架构
  • 原文地址:https://www.cnblogs.com/gcb999/p/3189277.html
Copyright © 2011-2022 走看看