CALayer(非官方翻译)

Class CALayer

CALayer类管理基于图像的内容,并允许你对该内容执行动画。图层通常用于提供视图的后备存储,但也可以在不显示内容的情况下使用。 图层的主要工作是管理你提供的可视内容,但图层本身具有可设置的可视属性,例如背景色,边框和阴影。 除了管理可视内容之外,该层还维护关于其内容的几何形状(例如其位置,大小和变换)的信息,该信息用于在屏幕上呈现该内容。 修改图层的属性是如何在图层的内容或几何图形上启动动画。 层对象通过采用CAMediaTiming协议来封装层及其动画的持续时间和起搏,CAMediaTiming协议定义了层的定时信息

Symbols

Creating a Layer 创建图层

+ layer 创建并返回图层对象实例

Discussion: 如果你继承了CALayer,你可以重写这个方法,并且使用它来提供一个你指定子类的实例

- init 返回一个初始化的CALayer对象

Discussion: 这是不在表示层中的图层对象的初始化器

initWithLayer: 覆盖来拷贝或初始化指定图层的自定义字段


Accessing Related Layer Objects 访问相关层对象

- presentationLayer 返回一个呈现图层的副本,该对象表示当前显示在屏幕上的图层的状态

- modelLayer 返回与接收器关联的模型图层对象(如果有)


Accessing the Delegate 访问代理

delegate 图层的代理对象


Providing the Layer's Content 提供图层内容

contents 提供图层内容的对象,动画.

Discussion: 这个属性的默认值为nil,如果你使用这个图层来显示一张静态图像,你可以把包含你想要显示的图像的CGImageRef设置给这个属性。为此属性赋值将导致图层使用你的图像,而不是创建单独的后备存储。如果图层对象绑定到视图对象,你应该避免直接设置此属性的内容。视图和图层之间的交互通常导致视图在后续更新期间代替此属性的内容。

eg: layer.contents = (__bridge id)image.CGImage;

contentsRect 在单位坐标空间,定义应该被使用的图层内容部分的矩形。动画。允许我们在图层边框里显示寄宿图的一个子域。可以用于图片拼合

Discussion: 默认为单位矩形(0.0, 0.0, 1.0, 1.0)。如果请求单位矩形外的像素,则内容视图的边缘像素将向外扩展。如果提供的是一个空矩形,则结果是未定义的。

contentsCenter定义如果图层内容调整大小时如何缩放图层内容的矩形。动画。默认为单位矩形(0.0, 0.0, 1.0, 1.0)

- display 重新加载此图层的内容

- drawInContext: 使用指定的绘图上下文绘制图层的内容


Modifying the Layer's Appearance 修改图层外观

contentsGravity 一个常量,指定图层内容如何在其范围内定位或缩放 <->UIView: contentMode

eg: layer.contentsGravity = kCAGravityResizeAspect;

opacity 接收器的不透明度。动画

hidden 一个布尔值指示图层是否显示。动画

masksToBounds 一个布尔值指示子图层是否剪切到图层的边界。动画☑️ <->UIView: clipsToBounds

mask 一个可选图层,其alpha通道用于屏蔽图层内容

doubleSided 一个布尔值指示图层当背离视图时是否显示它的内容。动画

cornerRadius 绘制图层的背景圆角时使用的半径。动画

borderWidth 图层边框的宽度。动画

borderColor 图层边框的颜色。动画

backgroundColor 接收器的背景色。动画

shadowOpacity 图层阴影的不透明度。动画

shadowRadius 用于渲染图层阴影的模糊半径(以点为单位)。动画

shadowOffset 图层阴影的偏移量(以点为单位)。动画

shadowColor 图层阴影的颜色。动画

shadowPath 图层阴影的形状。动画

style 一个用于存储未由图层显示定义的属性值的可选字典

allowsEdgeAntialiasing一个布尔值指示是否允许图层执行边缘抗锯齿

allowsGroupOpacity 一个布尔值指示是否允许图层将自身复合为与其父级分离的组


Accessing the Layer's Filters 访问图层的过滤器

filters 应用于图层和其子图层内容的Core Image过滤器数组。动画

compositingFilter 一个CoreImage过滤器用于合成图层及其后面的内容。动画

backgroundFilters 应用于图层后面的内容的CoreImage过滤器数组。动画

minificationFilter当减少内容的大小时使用的过滤器

minificationFilterBias 缩微过滤器用于确定细节水平的偏差因子

magnificationFilter 当增加内容的大小时使用的过滤器


Configuring the Layer's Rendering Behavior 配置图层的呈现行为

opaque一个布尔值指示图层是否包含完全不透明内容。

edgeAntialiasingMask 位掩码定义如何光栅化接收器的边缘

- contentsAreFlipped 返回一个布尔值,指示屠城内容在呈现时是否隐式翻转

geometryFlipped 一个布尔值指示图层和其子图层的几何是否垂直翻转

drawsAsynchronously 一个布尔值指示绘图命令是否在后台线程中异步延迟和处理

shouldRasterize 一个布尔值指示图层在合成之前是否作为位图呈现。动画

rasterizationScale相对于图层的坐标空间光栅化内容的比例

- renderInContext: 将接收器和其子图层渲染到指定的上下文中


Modifying the Layer Geometry 修改图层几何结构

frame 图层的框架矩形

bounds 图层的边界矩形。动画

position 在它的父图层坐标空间中图层的位置。动画

zPosition 在z坐标轴上图层的位置。动画

anchorPointZ 图层沿z轴的位置的锚点。动画

anchorPoint 定义一个图层的边界矩形的锚点。动画

contentsScale 应用于图层的比例因子。 定义了寄宿图的像素尺寸和视图大小的比例,默认情况下它是一个值为1.0的浮点数。属于支持高分辨率屏幕机制的一部分。用来判断在绘制图层的时候应该为寄宿图创建的空间大小,和需要显示的图片的拉伸度。 <->UIView: contentScaleFactor

tip: 用代码的方式来处理寄宿图的时候,需要手动的设置图层的contentsScale属性,否则,图片在Retina设备上会显示不正确。

eg: layer.contentsScale = [UIScreen mainScreen].scale;

Managing the Layer's Transform 管理图层的变换

transform 应用于图层内容的变换。动画

sublayerTransform 指定在呈现时应用于子图层的变换。动画

- affineTransform 返回图层变换的仿射版本

- setAffineTransform: 将图层的变换设置为指定的仿射变换


Managing the Layer Hierarchy 管理图层层级

sublayers 一个数组包含图层的子图层

superlayer 图层的父图层

- addSublayer:将图层添加到子图层列表中

- removeFromSuperlayer 从父层拆离图层

- insertSublayer:atIndex: 将指定的层插入指定索引处的接收方子层列表中。

- insertSublayer:below:将指定的子层插入到已经属于接收器的不同子层下面。

- insertSublayer:above: 将指定的子层插入到已属于接收器的不同子层上。

- replaceSublayer:with:用不同的图层对象替换指定的子图层。


Updating Layer Display 更新图层显示

- setNeedsDisplay将图层的内容标记为需要更新

- setNeedsDisplayInRect: 将指定矩形内的区域标记为需要更新

needsDisplayOnBoundsChange一个布尔值指示当它的边界矩形改变时是否必须更新图层内容

- displayIfNeeded如果图层当前被标记为需要更新,则启动图层的更新过程

- needsDisplay返回一个布尔值指示图层是否以标记为需要更新

+ needsDisplayForKey:返回一个布尔值指示对指定键的更改是否要求重新显示该图层


Layer Animations 图层动画

- addAnimation:forKey: 给图层渲染树添加指定动画对象

- animationForKey:使用指定的标识符来返回一个动画对象

- removeAllAnimations移除依附在图层上的所有动画

- removeAnimationForKey:使用指定的键来移除动画对象

- animationKeys返回一个字符串数组,用来标记当前附加在图层的动画


Managing Layer Resizing and Layout 管理图层调整和布局

layoutManager负责布置图层的子图层对象

- setNeedsLayout使图层的布局无效,并将其标记为需要更新

- layoutSublayers告诉图层更新其布局

- layoutIfNeeded 如果需要,重新计算接收器的布局

- needsLayout 返回一个布尔值,指示图层是否已标记为需要布局更新

autoresizingMask 一个位掩码定义当它的父图层的边界改变时如何调整图层的大小

- resizeWithOldSuperlayerSize: 通知接收器其父图层的大小改变了

- resizeSublayersWithOldSize:通知接收器的子图层接收器的大小已经改变了

- preferredFrameSize 返回图层在其父图层的坐标空间中的首选大小


Managing Layer Constraints 管理图层约束

constraints用于定位当前图层的子图层的约束

- addConstraint:给图层添加指定约束


Getting the Layer's Actions 获取图层的行为

- actionForKey: 返回分配给指定键的动作对象

actions 包含图层动作的字典

+ defaultActionForKey:为当前类返回一个默认的动作


Mapping Between Coordinate and Time Spaces 坐标和时空之间的映射

- convertPoint:fromLayer:将点从指定的图层坐标系转换为接收器坐标系

- convertPoint:toLayer: 将点从接收器的坐标系转换为指定图层的坐标系

- convertRect:fromLayer:将矩形从指定的图层坐标系转换为接收器的坐标系

- convertRect:toLayer: 将矩形从接收器的坐标系转换为指定图层的坐标系

- convertTime:fromLayer:将时间间隔从指定图层的时间空间转换为接收器的时间空间

- convertTime:toLayer:将时间间隔从接收器的时间空间转换为指定图层的时间空间


Hit Testing 点击测试

- hitTest:返回包含指定点的图层层次结构(包含它自己)中接收器最远子图层

- containsPoint:返回接收器是否包含指定点


Scrolling 滚动

visibleRect图层在它自己的坐标空间中的可见区域

- scrollPoint: 在图层最近的祖先滚动图层中启动滚动,以使指定点位于滚动图层的原点

- scrollRectToVisible 在图层最近的祖先滚动图层中启动滚动,以使指定的矩形变为可见


Identifying the Layer 图层的标识

name 接收器的名字


Key-Value Coding Extensions 键值编码扩展

- shouldArchiveValueForKey:返回一个布尔值指示是否应存档指定键的值

+ defaultValueForKey: 指定一个默认值关联一个指定的键


Constants 常量

CAAutoresizingMask 这些常量由autoresizingMask属性使用

Action Ifentifiers 这些常量是预定义动作标识符,通过actionForKey:,addAnimation:forKey,defaultActionForKey:,removeAnimationForKey:,访问图层的过滤器以及CAAction的协议方法runActionForKey:object:arguments:使用

CAEdgeAntialiasingMask这个标记由edgeAntialiasingMask属性使用

Contents Gravity Values 当图层的边界大于内容对象的边界时,内容重力常量指定内容对象的位置。被contentsGravity属性使用

Identity Transform定义核心动画使用的原始转换矩阵

Scaling Filters这些常量指定被magnificationFilterminificationFilter使用的缩放过滤器

CATransform3D定义在核心动画使用的标准转换矩阵


Initializers 初始化器

+ layerWithRemoteClientId:


Instance Properties 实例属性

contentsFormat

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 版本记录 前言 大家都知道UIView之所以可以显示内容,主要是靠其底层的CALayer。CALayer包含在Qu...
    刀客传奇阅读 1,491评论 2 2
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 8,460评论 6 30
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 5,091评论 5 13
  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 6,148评论 0 13
  • 战略就是生存 战略就是预见 战略就是理念 战略就是航海图 战略就是找魂 战略就是竟合 战略就是破局 ——王志纲工作...
    吴鹏自远方阅读 597评论 0 1