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

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

重写drawInContext方法

自己定义的图层以下的方法。然后必须自己定义的图层对象显示调用

[layer setNeedsDisplay]然后才会调用这种方法;

自定图层文件

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

控制器文件

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

使用代理

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

控制器实现代理的方法

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

调用

  1. TestLayer *layer = [TestLayer layer];
  2. layer.bounds = CGRectMake(0, 0, 100, 100);
  3. layer.position = CGPointMake(100, 100);
  4. layer.anchorPoint = CGPointMake(0, 0);
  5. layer.backgroundColor = [UIColor blueColor].CGColor;
  6. layer.cornerRadius = 10;
  7. layer.delegate = self;
  8. [layer setNeedsDisplay];//必须显示调用,不然也不会调用代理的方法
  9. [self.view.layer addSublayer:layer];

【iOS开发-图层】自己定义图层的两种方式的更多相关文章

  1. 【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系

    (1)设置状态栏的2种方式 --第一种方式就是我们在控制器中设置,系统默认就是交给视图控制器去管理的,这样不同视图控制器能够自己定义不同的状态栏例如以下: -(BOOL)prefersStatusBa ...

  2. 怎样在Android开发中FPS游戏实现的两种方式比较

    怎样在Android开发中FPS游戏实现的两种方式比较 如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS 英文名:FPS (F ...

  3. 使用react定义组件的两种方式

    react组件的两种方式:函数定义,类定义 在定义一个组件之前,首先要明白一点:react元素(jsx)是react组件的最基本的组成单位 组件要求: 1,为了和react元素进行区分,组件名字首必须 ...

  4. Spring定义Bean的两种方式:和@Bean

    前言:    Spring中最重要的概念IOC和AOP,实际围绕的就是Bean的生成与使用. 什么叫做Bean呢?我们可以理解成对象,每一个你想交给Spring去托管的对象都可以称之为Bean. 今天 ...

  5. IOS xib生成界面和代码生成界面两种方式混合

    应用程序代理类 WKAppDelegate.m // // WKAppDelegate.m // HelloWorld // // Created by easy5 on 13-9-18. // Co ...

  6. Golang开发环境搭建(Notepad++、LiteIDE两种方式以及martini框架使用)

    本文介绍两种Golang的开发环境一种基于notepad++.还有一种基于liteide. 1.下载Golang语言的pkg:http://golangtc.com/download 直接点击安装,一 ...

  7. React 中的 定义组件的 两种方式

    React 中创建 Components 的方式有两种:Function and Class 定义一个组件最简单的方法就是写一个 JavaScript 函数 function Welcome(prop ...

  8. 【iOS开发】创建单例的两种方法

    创建一个单例很多办法.我先列举一个苹果官方文档中的写法. [cpp] view plaincopy   static AccountManager *DefaultManager = nil; + ( ...

  9. iOS开发中方法延迟执行的几种方式

    概述 项目开发中经常会用到方法的延时调用,下面列举常用的几种实现方式: 1.performSelector 2.NSTimer 3.NSThread线程的sleep 4.GCD 1.performSe ...

  10. 浅谈iOS开发中方法延迟执行的几种方式

    Method1. performSelector方法 Method2. NSTimer定时器 Method3. NSThread线程的sleep Method4. GCD 公用延迟执行方法 - (vo ...

随机推荐

  1. 检查Linux Bash安全漏洞以及各环境修复解决方法

    第一.检测是否存在Bash漏洞$env x='() { :;}; echo vulnerable' bash -c "echo this is a test"如果返回以下内容:则请 ...

  2. malloc函数的一种简单的原理性实现

    malloc()是C语言中动态存储管理的一组标准库函数之一.其作用是在内存的动态存储区中分配一个长度为size的连续空间.其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针 ...

  3. 服务器编程入门(1)TCP/IP协议族

    问题聚焦: 简单地梳理一下TCP/IP各层的功能和常用协议 详细了解ARP(数据链路层)和DNS(应用层)协议的工作原理 1 TCP/IP协议族体系结构 数据链路层:     职责:实现网卡接口的网络 ...

  4. hdu5046(重复覆盖+二分)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5046 题意:要在n个城市里建造不超过k个机场覆盖所有城市,问机场城市之间最大距离最小为多少. 分析:二 ...

  5. 怎样将android studio项目导入eclipse

    如今,越来越多的开源项目都是用android studio来开发的,所以源码都与eclipse有所不同. 以下是将android studio项目导入eclipse的一般步骤: 1. 先解压项目: 2 ...

  6. Spring MVC中一般 普通类调用service

    在Spring MVC中,Controller中使用service只需使用注解@Resource就行,但是一般类(即不使用@Controller注解的类)要用到service时,可用如下方法: 1.S ...

  7. 13、Cocos2dx 3.0三,找一个小游戏开发3.0中间Director :郝梦主,一统江湖

    重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27706967 游戏中的基本元素 在曾经文章中,我们具 ...

  8. maven 打包 时出现非法字符: /65279错误

    maven 打包 时出现非法字符: /65279错误 碰到的一个问题: 使用下面的命令给工程打包时, maven mvn clean package -Ptest01 -Dmaven.test.ski ...

  9. android中listview分页载入数据

    前段时间做的新浪微博项目一直想实现listview分页载入数据,今天最终实现了,哈哈!感觉挺好的,今天又写了个demo给大家分享下. 首先说下listview的优化方案,这也是面试中常考的题目.优化方 ...

  10. Python学习入门基础教程(learning Python)--3.3.1 Python下的布尔表达式

    简单的说就是if要判断condition是真是假,Python和C语言一样非0即真,所以如果if的condition是布尔表达式我们可以用True或者非0数(不可是浮点数)表示真,用False或者0表 ...