Quartz Core框架之CALayer
1.继承链:NSObject
2.创建一个layer
(1)+ (instancetype)layer :创建和返回一个layer实例对象
(2)- (instancetype)init :返回一个初始化的calayer对象
(3)- (instancetype)initWithLayer:(id)layer :为一个视图对象初始化一个已经存在的layer对象,view.layer = layer
3.读取相关的layer 对象
(1)- (id)presentationLayer :返回一个复制当前显示layer对象的副本
(2)- (id)modelLayer :返回和接收者相关的model layer
4.读取委托
(1)@property(weak) id delegate :设置委托,遵守的协议为《CALayerDelegate》
5.提供layer 内容
(1)@property(strong) id contents :一个提供layer目录的对象
(2)@property CGRectcontentsRect :返回目录内容的矩形
(3)@property CGRectcontentsCenter :这个矩形定义了layer内容是怎么样进行缩放的当他们的大小进行改变的时候
(4)- (void)display :不可以直接调用这个方法,当layer在合适的时间来更新layer的内容的时候 再调用
(5)- (void)drawInContext:(CGContextRef)ctx :使用指定的图像上下文来绘制layer的内容
6.修改layer的出现
(1)@property(copy) NSString*contentsGravity :决定了内容对齐与填充方式
(2)@property float opacity :设置透明度
(3)@property(getter=isHidden) BOOL hidden :是否让layer显示
(4)@property BOOL masksToBounds :指定子layer超过边界的时候是否省略超出的那部分
(5)@property(strong) CALayer*mask :用来掩盖layer内容的layer通道
(6)@property(getter=isDoubleSided) BOOL doubleSided :意思是图层有双面,是否都显示,设置NO意思背面看不到
(7)@property CGFloatborderWidth :layer边框的宽度
(8)@property CGColorRefborderColor :layer边框的颜色
(9)@property CGColorRefbackgroundColor :设置接收者背景的颜色
(10)@property float shadowOpacity ;layer阴影的透明度
(11)@property CGFloatshadowRadius :设置阴影的圆角的程度
(12)@property CGSizeshadowOffset :设置阴影的方向和大小
(13)@property CGColorRefshadowColor :设置阴影的颜色
(14)@property CGPathRefshadowPath :设置阴影的形状
(15)@property(copy) NSDictionary*style :An optional dictionary used to store property values that aren't explicitly defined by the layer
(16)@property float minificationFilterBias :缩放因子
(17)@property(copy) NSString*minificationFilter :设置缩小的模式
(18)@property(copy) NSString*magnificationFilter :设置放大的模式
7.配置layer的渲染行为
(1)@property(getter=isOpaque) BOOL opaque :是否为完全不透明
(2)@property CAEdgeAntialiasingMaskedgeAntialiasingMask :用于限定层的边缘是如何栅格化,默认值都是抗齿轮的
(3)- (BOOL)contentsAreFlipped :获取当前layer图层的y轴方向是否被翻转了
(4)@property(getter=isGeometryFlipped) BOOL geometryFlipped :表示layer是否被垂直旋转
(5)@property BOOL drawsAsynchronously :是否异步绘制,默认是no
(6)@property BOOL shouldRasterize :A Boolean that indicates whether the layer is rendered as a bitmap before compositing.
(7)@property CGFloatrasterizationScale :栅格化的比例
(8)- (void)renderInContext:(CGContextRef)ctx :显在指定的上下文中渲染接收者
8.修改layer的几何
(1)@property CGRectframe :设置layer的矩形
(2)@property CGRectbounds :layer边界的矩形
(3)@property CGPointposition :layer在父layer中的位置
(4)@property CGFloatzPosition :layer在z轴的位置
(5)@property CGFloatanchorPointZ :layer的锚点的z分量
(6)@property CGPointanchorPoint :限定层边界的锚点
(7)@property CGFloatcontentsScale :设置内容的缩放
9.管理layer的变形
(1)@property CATransform3D transform :3d变换,用于层边界相对于锚点的变换
(2)@property CATransform3D sublayerTransform :3d变换,用于指定子层边界相对于锚点的变换
(3)- (CGAffineTransform)affineTransform :用于访问变换属性,
(4)- (void)setAffineTransform:(CGAffineTransform)m :仿射变换的存取方法
10.管理layer 链
(1)@property(copy) NSArray<CALayer *> *sublayers :获取layer包含的所有子层
(2)@property(readonly) CALayer*superlayer :返回layer的父层
(3)- (void)addSublayer:(CALayer *)aLayer :为layer添加子层
(4)- (void)removeFromSuperlayer :从父层中移除该layer
(5)- (void)insertSublayer:(CALayer *)aLayer atIndex:(unsigned int)index ;在指定的索引插入子层
(6)- (void)insertSublayer:(CALayer *)aLayer below:(CALayer *)sublayer :在指定子层的下面插入层
(7)- (void)insertSublayer:(CALayer *)aLayer above:(CALayer *)sublayer :在指定的子层上面插入层
(8)- (void)replaceSublayer:(CALayer *)oldLayer with:(CALayer *)newLayer :为指定的子层替换为其他的层
11.更新layer的显示
(1)- (void)setNeedsDisplay :设置有需要的视图重新绘制
(2)- (void)setNeedsDisplayInRect:(CGRect)theRect :设置在某一个区域的内容需要重新绘制
(3)@property BOOL needsDisplayOnBoundsChange :是否让layer的内容进行更新档边界矩形发生改变的时候
(4)- (void)displayIfNeeded :如果有需要进行内容重新绘制
(5)- (BOOL)needsDisplay :是否允许重新绘制
(6)+ (BOOL)needsDisplayForKey:(NSString *)key :指定是否改变key的值来重新进行绘制
12.layer动画
(1)- (void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key :通过key值来取得一个动画对象并添加
(2)- (CAAnimation *)animationForKey:(NSString *)key :通过key值来获取动画对象
(3)- (void)removeAllAnimations :移除所有的动画
(4)- (void)removeAnimationForKey:(NSString *)key :移除指定的动画
(5)- (NSArray<NSString *> *)animationKeys :获取动画化的key
13.管理layer调整大小和布局
(1)@property(strong) id layoutManager :该对象用来对子层进行布局
(2)- (void)setNeedsLayout :取消旧的布局,根据需要新型更新布局
(3)- (void)layoutSublayers :通知layer来更新布局
(4)- (void)layoutIfNeeded :重新计算接收者的布局,如果有需要的话
(5)- (BOOL)needsLayout :是否需要布局
(6)@property CAAutoresizingMaskautoresizingMask :设置自动大小调整遮罩
(7)- (void)resizeWithOldSuperlayerSize:(CGSize)size :通知接收者父层的大小发生改变
(8)- (void)resizeSublayersWithOldSize:(CGSize)size :设置子层的大小
14.获取layer的动作
(1)- (id<CAAction>)actionForKey:(NSString *)key :通过指定的key来获取action对象
(2)@property(copy) NSDictionary<NSString *,id<CAAction>> *actions :返回由layer动作组成的字典
(3)+ (id<CAAction>)defaultActionForKey:(NSString *)key :返回当前类的默认动作
15.映射坐标和时间
(1)- (CGPoint)convertPoint:(CGPoint)aPoint fromLayer:(CALayer *)layer :把点从指定的layer坐标系统转换到接收者的坐标系统中
(2)- (CGPoint)convertPoint:(CGPoint)aPoint toLayer:(CALayer *)layer :把点从接收者坐标系统中转换到指定layer坐标系统中
(3)- (CGRect)convertRect:(CGRect)aRect fromLayer:(CALayer *)layer :把矩形从指定的layer坐标系统中转换到接收者坐标系统中
(4)- (CGRect)convertRect:(CGRect)aRect toLayer:(CALayer *)layer :把矩形从接收者坐标系统转换到layer坐标系统中
(5)- (CFTimeInterval)convertTime:(CFTimeInterval)timeInterval fromLayer:(CALayer *)layer :Converts the time interval from the specified layer’s time space to the receiver’s time space.
(6)- (CFTimeInterval)convertTime:(CFTimeInterval)timeInterval toLayer:(CALayer *)layer :Converts the time interval from the receiver’s time space to the specified layer’s time space
16.hit testing
(1)- (CALayer *)hitTest:(CGPoint)thePoint :Returns the farthest descendant of the receiver in the layer hierarchy (including itself) that contains the specified point
(2)- (BOOL)containsPoint:(CGPoint)thePoint :返回布尔值,判断接收者是否包含有指定的点
17.滚动
(1)@property(readonly) CGRectvisibleRect :读取可见的区域
(2)- (void)scrollPoint:(CGPoint)thePoint :想要滚动到的点
(3)- (void)scrollRectToVisible:(CGRect)theRect :滚动到指定的区域
18.标志layer
(1) @property(copy) NSString*name :接收者的名字
19.键值对编码扩展
(1)- (BOOL)shouldArchiveValueForKey:(NSString *)key :返回一个布尔值指定是否保存key指定的值
(2)+ (id)defaultValueForKey:(NSString *)key :指定和指定key相关的默认值
20.常量
(1)CAAutoresizingMask的常量
kCALayerNotSizable = 0, :接收者不可以调整大小
kCALayerMinXMargin = 1U << 0, :父视图和接受者之间的左边界是可调整的
kCALayerWidthSizable = 1U << 1, :接收者的宽度是可调整的
kCALayerMaxXMargin = 1U << 2, :父视图和接收者之间的右边界是可调整的
kCALayerMinYMargin = 1U << 3, :父视图和接收者之间的底部是可调整的
kCALayerHeightSizable = 1U << 4, :接收者的高度是可调整的
kCALayerMaxYMargin = 1U << 5 :父视图和接收者之间的顶部是可调整的
(2)CAEdgeAntialiasingMask的常量
kCALayerLeftEdge = 1U << 0, :左边的边缘设置为抗齿轮属性
kCALayerRightEdge = 1U << 1, :右边的边缘设置为抗齿轮属性
kCALayerBottomEdge = 1U << 2, :底部的边缘设置为抗齿轮属性
kCALayerTopEdge = 1U << 3, :顶部的边缘设置为抗齿轮属性
(3)Contents Gravity Values的常量
NSString * const kCAGravityCenter; :重力中心在中心
NSString * const kCAGravityTop; :重力中心在顶部
NSString * const kCAGravityBottom; :重力中心在底部
NSString * const kCAGravityLeft; :重力中心在左边
NSString * const kCAGravityRight; :重力中心在右边
NSString * const kCAGravityTopLeft; :重力中心在左上方
NSString * const kCAGravityTopRight; :重力重力在右上方
NSString * const kCAGravityBottomLeft; :重力中心在左下角
NSString * const kCAGravityBottomRight; :重力中心在右下角
NSString * const kCAGravityResize; :
NSString * const kCAGravityResizeAspect;
NSString * const kCAGravityResizeAspectFill;
Quartz Core框架之CALayer的更多相关文章
- Quartz Core框架之core animation
1.时间功能 (1)CFTimeIntervalCACurrentMediaTime ( void ); :返回当前的绝对时间 2.转换功能 (1)bool CATransform3DIsIdenti ...
- 基于Asp.Net Core 5.0依赖Quartz.Net框架编写的任务调度web管理平台
源码地址: https://github.com/246850/Calamus.TaskScheduler 演示地址:http://47.101.47.193:1063/ 1.Quartz.NET框架 ...
- GPS部标平台的架构设计(三) 基于struts+spring+hibernate+ibatis+quartz+mina框架开发GPS平台
注意,此版本是2014年研发的基于Spring2.5和Struts2的版本,此版本的源码仍然销售,但已不再提供源码升级的服务,因为目前我们开发的主流新版本是2015-2016年近一年推出的基于spri ...
- 基于Quartz.NET框架的WinForm任务计划管理工具
最近接到一个小需求 ——可以定期同步20个Sql Server 7.0数据库里的数据(数据量会预计>10000),并保存为cvs格式文件 ——可以设置保存文件数据量 ——该应用需要用WinFor ...
- 一个Mini的ASP.NET Core框架的实现
一.ASP.NET Core Mini 在2019年1月的微软技术(苏州)俱乐部成立大会上,蒋金楠老师(大内老A)分享了一个名为“ASP.NET Core框架揭秘”的课程,他用不到200行的代码实现了 ...
- 200行代码,7个对象——让你了解ASP.NET Core框架的本质
2019年1月19日,微软技术(苏州)俱乐部成立,我受邀在成立大会上作了一个名为<ASP.NET Core框架揭秘>的分享.在此次分享中,我按照ASP.NET Core自身的运行原理和设计 ...
- ASP.NET Core 框架源码地址
ASP.NET Core 框架源码地址 https://github.com/dotnet/corefx 这个是.net core的 开源项目地址 https://github.com/aspnet ...
- 了解ASP.NET Core框架的本质
了解ASP.NET Core框架的本质 ASP.NET Core自身的运行原理和设计思想创建了一个 “迷你版” 的ASP.NET Core框架,并且利用这个 “极简” 的模拟框架阐述了ASP.NET ...
- 基于spring的quartz定时框架,实现简单的定时任务功能
在项目中,经常会用到定时任务,这就需要使用quartz框架去进行操作. 今天就把我最近做的个人主页项目里面的定时刷新功能分享一下,很简单. 首先需要配置一个配置文件,因为我是基于spring框架的,所 ...
随机推荐
- C#基础
.net/dotnet:一般指.NetFramework框架,一种平台,一种技术. c#(sharp):一种编程语言,可以开发基于.net平台的应用. Java:是一种技术,又是一门语言: .net应 ...
- 【APP自动化测试】Monkey的测试原理和方法
参考资料:http://blog.csdn.net/io_field/article/details/52189972 一.Monkey测试原理:Monkey是Android中的一个命令行工具,可以运 ...
- SQL server 常用语句
SQL Server中常用的SQL语句 1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...
- 深入浅出Mybatis系列(二)---配置简介(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(一)---Mybatis入门>, 写了一个Demo简单体现了一下Mybatis的流程.本次,将简单介绍一下Mybatis的配置文件: 上次例子中,我们 ...
- eclipse运行项目发生Unsupported major.minor version 52.0错误
编程的世界错误多啊 各种乱七八糟的异常数不清啊 嘿嘿呦!!! 今天又碰到莫名奇妙的问题了:eclipse中原来的项目运行的好好的,前几天想学AndroidStudio于是就装了,为了节省硬盘空间节间, ...
- CentOS 7 Mysql yum源
CentOS 7 安装Mysqlrpm -ivh http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpmyum install m ...
- 使用Kettle抽取数据时,出现中文乱码问题解决方案
使用Kettle在不同的数据库抽取数据时,有时会出现中文乱码问题:其解决方案如下: 1.查看数据库的字符集是否是UTF-8(最常用的字符集) 2.如果数据库设置正确仍然存在中文乱码,则可能是因为有的客 ...
- 微信开发订阅号(ASP.NET MVC4+jquery mobile+AppHarbor发布)
首先应该去微信公众平台注册一个账号,因为我是用的个人,所以只能注册订阅号,然后需要提供身份证照片,这些大家慢慢折腾.然后在微信管理面板中选择高级功能,进入开发者模式. 在服务器配置中需要提供最重要的u ...
- 让ie6对png透明图片支持起来
[声明:此文仅是对低版本ie使用透明图片的一个研究,当时出于工作要求,所以花费了一番心思在兼容旧版本ie上,现在对ie8都是做降级处理了.不培养用户坏习惯.引导用户跟随潮流体验新技术应是我们前端开发者 ...
- MS SQLSERVER中如何快速获取表的记录总数
在数据库应用的设计中,我们往往会需要获取某些表的记录总数,用于判断表的记录总数是否过大,是否需要备份数据等.我们通常的做法是:select count(*) as c from tableA .然而对 ...