CALayer一些知识~...3

CALayer回吐的先后顺序是怎样的呢?CALayer绘图时是先绘制父Layer的内容,然后绘制子Layer的内容,这样便可以让子Layer显示在父Layer上面

•要在CALayer上绘图,有两种方法:

1.创建一个CALayer的子类,然后覆盖drawInContext:方法,可以使用Quartz2D API在其中进行绘图

2.设置CALayer的delegate,然后让delegate实现drawLayer:inContext:方法进行绘图

•注意:

–不能再将UIView设置为这个CALayer的delegate,因为UIView对象已经是内部层的delegate,再次设置会出问题

–无论使用哪种方法,都必须向层发送setNeedsDisplay消息,以触发相应绘图方法的调用

•当UIView收到setNeedsDisplay消息时,CALayer会准备好一个CGContextRef,然后向它的delegate即UIView,发送消息,并且传入已经准备好的CGContextRef对象。UIView在drawLayer:inContext:方法中会调用自己的drawRect:方法

•平时在drawRect:中通过UIGraphicsGetCurrentContext()获取的就是由CALayer传入的CGContextRef对象,在drawRect:中完成的所有绘图都会填入CALayer的CGContextRef中,然后被拷贝至屏幕

CALayer的CGContextRef用的是位图上下文(Bitmap Graphics Context)

当在UIView类中写了drawLayer:inContext:方法以后,需要调用该方法的super方法,来绘制内容,否则则不会绘制当前视图的Layer内容(不调用视图的DrawRect:方法)

如果在一个仕途上添加一个Layer,调用顺序是

调用视图的init方法初始化视图和layer--->调用layer代理即视图的方法drawLayer:inContext:,然后调用drawRect:方法,,最后调用子Layer的

drawInContext:方法

CALayer一些知识~...3

时间: 2024-10-13 12:34:21

CALayer一些知识~...3的相关文章

CALayer一些知识~

(以下内容是我查阅一些资料的整理和自己的理解,如果有不对的地方,欢迎斧正~^_^) CALayer是什么? CALayer是UIView中的图层,UIView的内容展示就是通过CALayer来展示的.有人可能会问UIView不是展示内容的吗,怎么会通过CALayer来展示呢? 其实UIView中不止有图层,还有子控件的位置,以及其能接受的响应事件和和事件的处理过程等等一系列的组件组合成的.而每一个UIView都有一个根CALayer来绘制和展示自己的内容.iOS中基本上所有UIView的动画都是

CALayer一些知识~...2

那既然CALayer是负责UIView上显示内容的,那我们如果想在UIView上展示一些内容能不能直接创建CALayer然后添加到UIView上的CALayer上呢?答案是肯定的(但是CALayer不能脱离UIView直接显示给用户,必须添加到UIView上的CALayer // 1. 自定义一个子图层,添加到当前根视图中 CALayer *myLayer = [CALayer layer]; myLayer.frame = CGRectMake(0, 0, 320, 100); myLayer

iOS 知识 - 常用小技巧大杂烩 - 转载

1,打印View所有子视图 po [[self view]recursiveDescription] 2,layoutSubviews调用的调用时机 * 当视图第一次显示的时候会被调用. * 添加子视图也会调用这个方法. * 当本视图的大小发生改变的时候是会调用的. * 当子视图的frame发生改变的时候是会调用的. * 当删除子视图的时候是会调用的. 3,NSString过滤特殊字符 // 定义一个特殊字符的集合 NSCharacterSet *set = [NSCharacterSet ch

CALayer 知识:创建带阴影效果的圆角图片图层和创建自定义绘画内容图层

效果如下: KMLayerDelegate.h 1 #import <UIKit/UIKit.h> 2 3 @interface KMLayerDelegate : NSObject 4 5 @end KMLayerDelegate.m 1 #import "KMLayerDelegate.h" 2 3 @implementation KMLayerDelegate 4 5 /** 6 * 根据角度,获取对应的弧度 7 * 8 * @param degree 角度 9 *

iOS面试必备-iOS基础知识

近期为准备找工作面试,在网络上搜集了这些题,以备面试之用. 插一条广告:本人求职,2016级应届毕业生,有开发经验.可独立开发,低薪求职.QQ:895193543 1.简述OC中内存管理机制. 答:内存管理机制:使用引用计数管理,分为ARC和MRC,MRC需要程序员自己管理内存,ARC则不需要.但是并不是 所有对象在ARC环境下均不需要管理内存,子线程和循环引用并不是这样.与retain配对使用的是release,retain代表引用计 数+1,release代表引用计数-1,当引用计数减为0时

iOS关于CoreAnimation动画知识总结

一:UIKit动画 在介绍CoreAnimation动画前先简单介绍一下UIKit动画,大部分简单的动画都可以使用UIKit动画实现,如果想实现更复杂的效果,则需要使用Core Animation了:UIKit动画有两种写法:它不仅可以针对视图还可以针对其它控件: 1:第一种写法是利用属性,结合beginAnimations.commitAnimations -(void)animationOfUIKit { UIView *redView=[[UIView alloc]initWithFram

iOS CALayer视图图层

在iOS中都会牵扯到图形转换,动画效果,添加视图,等等的一系列问题,在设计页面,设计图形,添加动画的时候都会使用到这个知识. 简单的说他就是视图的图层,但又不是视图,因为视图可以和用户交互,添加响应事件,添加视图等等,但是CALayer并不可以添加响应事件等等,它只是一个视图的图层,就是这个图片的显示层,展示层,只能够显示内容,比如展示背景颜色,展示图片,设置边框,等等. UIView上面的rootLayer 发生改变的话 子图层也会发生变化 如果想要改变 button的视图形状边框等,要改变的

动画基础知识汇总

转载自http://www.cnblogs.com/kenshincui/p/3972100.html --iOS核心动画 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看到动画操作在iOS中是如何简单和高效,很多原来想做但是苦于没有思路的动画在iO

iOS关于CoreAnimation动画知识总结(转)

一:UIKit动画 在介绍CoreAnimation动画前先简单介绍一下UIKit动画,大部分简单的动画都可以使用UIKit动画实现,如果想实现更复杂的效果,则需要使用Core Animation了:UIKit动画有两种写法:它不仅可以针对视图还可以针对其它控件: 1:第一种写法是利用属性,结合beginAnimations.commitAnimations -(void)animationOfUIKit { UIView *redView=[[UIView alloc]initWithFram