Class CALayer
CALayer類管理基于圖像的內(nèi)容菩彬,并允許你對(duì)該內(nèi)容執(zhí)行動(dòng)畫(huà)。圖層通常用于提供視圖的后備存儲(chǔ),但也可以在不顯示內(nèi)容的情況下使用独悴。 圖層的主要工作是管理你提供的可視內(nèi)容,但圖層本身具有可設(shè)置的可視屬性锣尉,例如背景色刻炒,邊框和陰影。 除了管理可視內(nèi)容之外自沧,該層還維護(hù)關(guān)于其內(nèi)容的幾何形狀(例如其位置坟奥,大小和變換)的信息,該信息用于在屏幕上呈現(xiàn)該內(nèi)容。 修改圖層的屬性是如何在圖層的內(nèi)容或幾何圖形上啟動(dòng)動(dòng)畫(huà)爱谁。 層對(duì)象通過(guò)采用CAMediaTiming協(xié)議來(lái)封裝層及其動(dòng)畫(huà)的持續(xù)時(shí)間和起搏晒喷,CAMediaTiming協(xié)議定義了層的定時(shí)信息
Symbols
Creating a Layer 創(chuàng)建圖層
+ layer
創(chuàng)建并返回圖層對(duì)象實(shí)例
Discussion: 如果你繼承了CALayer,你可以重寫(xiě)這個(gè)方法访敌,并且使用它來(lái)提供一個(gè)你指定子類的實(shí)例
- init
返回一個(gè)初始化的CALayer對(duì)象
Discussion: 這是不在表示層中的圖層對(duì)象的初始化器
initWithLayer:
覆蓋來(lái)拷貝或初始化指定圖層的自定義字段
Accessing Related Layer Objects 訪問(wèn)相關(guān)層對(duì)象
- presentationLayer
返回一個(gè)呈現(xiàn)圖層的副本凉敲,該對(duì)象表示當(dāng)前顯示在屏幕上的圖層的狀態(tài)
- modelLayer
返回與接收器關(guān)聯(lián)的模型圖層對(duì)象(如果有)
Accessing the Delegate 訪問(wèn)代理
delegate
圖層的代理對(duì)象
Providing the Layer's Content 提供圖層內(nèi)容
contents
提供圖層內(nèi)容的對(duì)象,動(dòng)畫(huà).
Discussion: 這個(gè)屬性的默認(rèn)值為nil寺旺,如果你使用這個(gè)圖層來(lái)顯示一張靜態(tài)圖像荡陷,你可以把包含你想要顯示的圖像的CGImageRef設(shè)置給這個(gè)屬性。為此屬性賦值將導(dǎo)致圖層使用你的圖像迅涮,而不是創(chuàng)建單獨(dú)的后備存儲(chǔ)废赞。如果圖層對(duì)象綁定到視圖對(duì)象,你應(yīng)該避免直接設(shè)置此屬性的內(nèi)容叮姑。視圖和圖層之間的交互通常導(dǎo)致視圖在后續(xù)更新期間代替此屬性的內(nèi)容唉地。
eg: layer.contents = (__bridge id)image.CGImage;
contentsRect
在單位坐標(biāo)空間,定義應(yīng)該被使用的圖層內(nèi)容部分的矩形传透。動(dòng)畫(huà)耘沼。允許我們?cè)趫D層邊框里顯示寄宿圖的一個(gè)子域≈煅危可以用于圖片拼合
Discussion: 默認(rèn)為單位矩形(0.0, 0.0, 1.0, 1.0)群嗤。如果請(qǐng)求單位矩形外的像素,則內(nèi)容視圖的邊緣像素將向外擴(kuò)展兵琳。如果提供的是一個(gè)空矩形狂秘,則結(jié)果是未定義的。
contentsCenter
定義如果圖層內(nèi)容調(diào)整大小時(shí)如何縮放圖層內(nèi)容的矩形躯肌。動(dòng)畫(huà)者春。默認(rèn)為單位矩形(0.0, 0.0, 1.0, 1.0)
- display
重新加載此圖層的內(nèi)容
- drawInContext:
使用指定的繪圖上下文繪制圖層的內(nèi)容
Modifying the Layer's Appearance 修改圖層外觀
contentsGravity
一個(gè)常量,指定圖層內(nèi)容如何在其范圍內(nèi)定位或縮放 <->UIView: contentMode
eg: layer.contentsGravity = kCAGravityResizeAspect;
opacity
接收器的不透明度清女。動(dòng)畫(huà)
hidden
一個(gè)布爾值指示圖層是否顯示钱烟。動(dòng)畫(huà)
masksToBounds
一個(gè)布爾值指示子圖層是否剪切到圖層的邊界。動(dòng)畫(huà)?? <->UIView: clipsToBounds
mask
一個(gè)可選圖層嫡丙,其alpha通道用于屏蔽圖層內(nèi)容
doubleSided
一個(gè)布爾值指示圖層當(dāng)背離視圖時(shí)是否顯示它的內(nèi)容拴袭。動(dòng)畫(huà)
cornerRadius
繪制圖層的背景圓角時(shí)使用的半徑。動(dòng)畫(huà)
borderWidth
圖層邊框的寬度曙博。動(dòng)畫(huà)
borderColor
圖層邊框的顏色拥刻。動(dòng)畫(huà)
backgroundColor
接收器的背景色。動(dòng)畫(huà)
shadowOpacity
圖層陰影的不透明度羊瘩。動(dòng)畫(huà)
shadowRadius
用于渲染圖層陰影的模糊半徑(以點(diǎn)為單位)泰佳。動(dòng)畫(huà)
shadowOffset
圖層陰影的偏移量(以點(diǎn)為單位)盼砍。動(dòng)畫(huà)
shadowColor
圖層陰影的顏色尘吗。動(dòng)畫(huà)
shadowPath
圖層陰影的形狀逝她。動(dòng)畫(huà)
style
一個(gè)用于存儲(chǔ)未由圖層顯示定義的屬性值的可選字典
allowsEdgeAntialiasing
一個(gè)布爾值指示是否允許圖層執(zhí)行邊緣抗鋸齒
allowsGroupOpacity
一個(gè)布爾值指示是否允許圖層將自身復(fù)合為與其父級(jí)分離的組
Accessing the Layer's Filters 訪問(wèn)圖層的過(guò)濾器
filters
應(yīng)用于圖層和其子圖層內(nèi)容的Core Image
過(guò)濾器數(shù)組。動(dòng)畫(huà)
compositingFilter
一個(gè)CoreImage
過(guò)濾器用于合成圖層及其后面的內(nèi)容睬捶。動(dòng)畫(huà)
backgroundFilters
應(yīng)用于圖層后面的內(nèi)容的CoreImage
過(guò)濾器數(shù)組黔宛。動(dòng)畫(huà)
minificationFilter
當(dāng)減少內(nèi)容的大小時(shí)使用的過(guò)濾器
minificationFilterBias
縮微過(guò)濾器用于確定細(xì)節(jié)水平的偏差因子
magnificationFilter
當(dāng)增加內(nèi)容的大小時(shí)使用的過(guò)濾器
Configuring the Layer's Rendering Behavior 配置圖層的呈現(xiàn)行為
opaque
一個(gè)布爾值指示圖層是否包含完全不透明內(nèi)容。
edgeAntialiasingMask
位掩碼定義如何光柵化接收器的邊緣
- contentsAreFlipped
返回一個(gè)布爾值擒贸,指示屠城內(nèi)容在呈現(xiàn)時(shí)是否隱式翻轉(zhuǎn)
geometryFlipped
一個(gè)布爾值指示圖層和其子圖層的幾何是否垂直翻轉(zhuǎn)
drawsAsynchronously
一個(gè)布爾值指示繪圖命令是否在后臺(tái)線程中異步延遲和處理
shouldRasterize
一個(gè)布爾值指示圖層在合成之前是否作為位圖呈現(xiàn)臀晃。動(dòng)畫(huà)
rasterizationScale
相對(duì)于圖層的坐標(biāo)空間光柵化內(nèi)容的比例
- renderInContext:
將接收器和其子圖層渲染到指定的上下文中
Modifying the Layer Geometry 修改圖層幾何結(jié)構(gòu)
frame
圖層的框架矩形
bounds
圖層的邊界矩形。動(dòng)畫(huà)
position
在它的父圖層坐標(biāo)空間中圖層的位置介劫。動(dòng)畫(huà)
zPosition
在z坐標(biāo)軸上圖層的位置徽惋。動(dòng)畫(huà)
anchorPointZ
圖層沿z軸的位置的錨點(diǎn)。動(dòng)畫(huà)
anchorPoint
定義一個(gè)圖層的邊界矩形的錨點(diǎn)座韵。動(dòng)畫(huà)
contentsScale
應(yīng)用于圖層的比例因子险绘。 定義了寄宿圖的像素尺寸和視圖大小的比例,默認(rèn)情況下它是一個(gè)值為1.0的浮點(diǎn)數(shù)誉碴。屬于支持高分辨率屏幕機(jī)制的一部分宦棺。用來(lái)判斷在繪制圖層的時(shí)候應(yīng)該為寄宿圖創(chuàng)建的空間大小,和需要顯示的圖片的拉伸度黔帕。 <->UIView: contentScaleFactor
tip: 用代碼的方式來(lái)處理寄宿圖的時(shí)候代咸,需要手動(dòng)的設(shè)置圖層的contentsScale屬性,否則成黄,圖片在Retina設(shè)備上會(huì)顯示不正確呐芥。
eg: layer.contentsScale = [UIScreen mainScreen].scale;
Managing the Layer's Transform 管理圖層的變換
transform
應(yīng)用于圖層內(nèi)容的變換。動(dòng)畫(huà)
sublayerTransform
指定在呈現(xiàn)時(shí)應(yīng)用于子圖層的變換奋岁。動(dòng)畫(huà)
- affineTransform
返回圖層變換的仿射版本
- setAffineTransform:
將圖層的變換設(shè)置為指定的仿射變換
Managing the Layer Hierarchy 管理圖層層級(jí)
sublayers
一個(gè)數(shù)組包含圖層的子圖層
superlayer
圖層的父圖層
- addSublayer:
將圖層添加到子圖層列表中
- removeFromSuperlayer
從父層拆離圖層
- insertSublayer:atIndex:
將指定的層插入指定索引處的接收方子層列表中贩耐。
- insertSublayer:below:
將指定的子層插入到已經(jīng)屬于接收器的不同子層下面。
- insertSublayer:above:
將指定的子層插入到已屬于接收器的不同子層上厦取。
- replaceSublayer:with:
用不同的圖層對(duì)象替換指定的子圖層潮太。
Updating Layer Display 更新圖層顯示
- setNeedsDisplay
將圖層的內(nèi)容標(biāo)記為需要更新
- setNeedsDisplayInRect:
將指定矩形內(nèi)的區(qū)域標(biāo)記為需要更新
needsDisplayOnBoundsChange
一個(gè)布爾值指示當(dāng)它的邊界矩形改變時(shí)是否必須更新圖層內(nèi)容
- displayIfNeeded
如果圖層當(dāng)前被標(biāo)記為需要更新,則啟動(dòng)圖層的更新過(guò)程
- needsDisplay
返回一個(gè)布爾值指示圖層是否以標(biāo)記為需要更新
+ needsDisplayForKey:
返回一個(gè)布爾值指示對(duì)指定鍵的更改是否要求重新顯示該圖層
Layer Animations 圖層動(dòng)畫(huà)
- addAnimation:forKey:
給圖層渲染樹(shù)添加指定動(dòng)畫(huà)對(duì)象
- animationForKey:
使用指定的標(biāo)識(shí)符來(lái)返回一個(gè)動(dòng)畫(huà)對(duì)象
- removeAllAnimations
移除依附在圖層上的所有動(dòng)畫(huà)
- removeAnimationForKey:
使用指定的鍵來(lái)移除動(dòng)畫(huà)對(duì)象
- animationKeys
返回一個(gè)字符串?dāng)?shù)組虾攻,用來(lái)標(biāo)記當(dāng)前附加在圖層的動(dòng)畫(huà)
Managing Layer Resizing and Layout 管理圖層調(diào)整和布局
layoutManager
負(fù)責(zé)布置圖層的子圖層對(duì)象
- setNeedsLayout
使圖層的布局無(wú)效铡买,并將其標(biāo)記為需要更新
- layoutSublayers
告訴圖層更新其布局
- layoutIfNeeded
如果需要,重新計(jì)算接收器的布局
- needsLayout
返回一個(gè)布爾值霎箍,指示圖層是否已標(biāo)記為需要布局更新
autoresizingMask
一個(gè)位掩碼定義當(dāng)它的父圖層的邊界改變時(shí)如何調(diào)整圖層的大小
- resizeWithOldSuperlayerSize:
通知接收器其父圖層的大小改變了
- resizeSublayersWithOldSize:
通知接收器的子圖層接收器的大小已經(jīng)改變了
- preferredFrameSize
返回圖層在其父圖層的坐標(biāo)空間中的首選大小
Managing Layer Constraints 管理圖層約束
constraints
用于定位當(dāng)前圖層的子圖層的約束
- addConstraint:
給圖層添加指定約束
Getting the Layer's Actions 獲取圖層的行為
- actionForKey:
返回分配給指定鍵的動(dòng)作對(duì)象
actions
包含圖層動(dòng)作的字典
+ defaultActionForKey:
為當(dāng)前類返回一個(gè)默認(rèn)的動(dòng)作
Mapping Between Coordinate and Time Spaces 坐標(biāo)和時(shí)空之間的映射
- convertPoint:fromLayer:
將點(diǎn)從指定的圖層坐標(biāo)系轉(zhuǎn)換為接收器坐標(biāo)系
- convertPoint:toLayer:
將點(diǎn)從接收器的坐標(biāo)系轉(zhuǎn)換為指定圖層的坐標(biāo)系
- convertRect:fromLayer:
將矩形從指定的圖層坐標(biāo)系轉(zhuǎn)換為接收器的坐標(biāo)系
- convertRect:toLayer:
將矩形從接收器的坐標(biāo)系轉(zhuǎn)換為指定圖層的坐標(biāo)系
- convertTime:fromLayer:
將時(shí)間間隔從指定圖層的時(shí)間空間轉(zhuǎn)換為接收器的時(shí)間空間
- convertTime:toLayer:
將時(shí)間間隔從接收器的時(shí)間空間轉(zhuǎn)換為指定圖層的時(shí)間空間
Hit Testing 點(diǎn)擊測(cè)試
- hitTest:
返回包含指定點(diǎn)的圖層層次結(jié)構(gòu)(包含它自己)中接收器最遠(yuǎn)子圖層
- containsPoint:
返回接收器是否包含指定點(diǎn)
Scrolling 滾動(dòng)
visibleRect
圖層在它自己的坐標(biāo)空間中的可見(jiàn)區(qū)域
- scrollPoint:
在圖層最近的祖先滾動(dòng)圖層中啟動(dòng)滾動(dòng)奇钞,以使指定點(diǎn)位于滾動(dòng)圖層的原點(diǎn)
- scrollRectToVisible
在圖層最近的祖先滾動(dòng)圖層中啟動(dòng)滾動(dòng),以使指定的矩形變?yōu)榭梢?jiàn)
Identifying the Layer 圖層的標(biāo)識(shí)
name
接收器的名字
Key-Value Coding Extensions 鍵值編碼擴(kuò)展
- shouldArchiveValueForKey:
返回一個(gè)布爾值指示是否應(yīng)存檔指定鍵的值
+ defaultValueForKey:
指定一個(gè)默認(rèn)值關(guān)聯(lián)一個(gè)指定的鍵
Constants 常量
CAAutoresizingMask
這些常量由autoresizingMask
屬性使用
Action Ifentifiers
這些常量是預(yù)定義動(dòng)作標(biāo)識(shí)符漂坏,通過(guò)actionForKey:,addAnimation:forKey,defaultActionForKey:,removeAnimationForKey:
,訪問(wèn)圖層的過(guò)濾器以及CAAction
的協(xié)議方法runActionForKey:object:arguments:
使用
CAEdgeAntialiasingMask
這個(gè)標(biāo)記由edgeAntialiasingMask
屬性使用
Contents Gravity Values
當(dāng)圖層的邊界大于內(nèi)容對(duì)象的邊界時(shí)景埃,內(nèi)容重力常量指定內(nèi)容對(duì)象的位置媒至。被contentsGravity
屬性使用
Identity Transform
定義核心動(dòng)畫(huà)使用的原始轉(zhuǎn)換矩陣
Scaling Filters
這些常量指定被magnificationFilter
和minificationFilter
使用的縮放過(guò)濾器
CATransform3D
定義在核心動(dòng)畫(huà)使用的標(biāo)準(zhǔn)轉(zhuǎn)換矩陣
Initializers 初始化器
+ layerWithRemoteClientId:
Instance Properties 實(shí)例屬性
contentsFormat