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
在單位坐標空間,定義應該被使用的圖層內容部分的矩形。動畫。允許我們在圖層邊框里顯示寄宿圖的一個子域??梢杂糜趫D片拼合
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
這些常量指定被magnificationFilter
和minificationFilter
使用的縮放過濾器
CATransform3D
定義在核心動畫使用的標準轉換矩陣
Initializers 初始化器
+ layerWithRemoteClientId:
Instance Properties 實例屬性
contentsFormat