簡介
CALayer包含在QuartzCore框架中,這是一個跨平臺的框架,既可以用在iOS中又可以用在Mac OS X中。在使用Core Animation開發動畫的本質就是將CALayer中的內容轉化為位圖從而供硬件操作。UIView更像是CALayer的Delegate,UIView是iOS的移動設備為了響應觸摸時間而封裝出來的,而Mac是只能點擊,所以共用CALayer意義就很大了。其實看看UIView繼承自UIControl就比較清楚了,看一個類的父類對我們了解一個類的設計很有幫助。
使用Quartz 2D繪圖時就用到了CALayer,drawRect:方法繪圖的本質就是繪制到了UIView的layer(屬性)中。但是在Core Animation中我們操作更多的則不再是UIView而是直接面對CALayer。下圖描繪了CALayer和UIView的關系,在UIView中有一個layer屬性作為根圖層,根圖層上可以放其他子圖層,在UIView中所有能夠看到的內容都包含在layer中:
UIView-CALayer
屬性介紹
屬性 | 說明 | 是否支持動畫 |
---|---|---|
anchorPoint is | 和中心點position重合的一個點,稱為“錨點”,錨點的描述是相對于x、y位置比例而言的默認在圖像中心點(0.5,0.5)的位置 | 是 |
backgroundColor | 圖層背景顏色 | 是 |
borderColor | 邊框顏色 | 是 |
borderWidth | 邊框寬度 | 是 |
bounds | 圖層大小 | 是 |
contents | 圖層顯示內容,例如可以將圖片作為圖層內容顯示 | 是 |
contentsRect | 圖層顯示內容的大小和位置 | 是 |
doubleSided | 圖層背面是否顯示,默認為YES | 是 |
frame | 圖層大小和位置,不支持隱式動畫,所以CALayer中很少使用frame,通常使用bounds和position代替 | 否 |
hidden | 是否隱藏 | 是 |
mask | 圖層蒙版 | 是 |
maskToBounds | 子圖層是否剪切圖層邊界,默認為NO | 是 |
opacity | 透明度 ,類似于UIView的alpha | 是 |
position | 圖層中心點位置,類似于UIView的center | 是 |
shadowColor | 陰影顏色 | 是 |
shadowOffset | 陰影偏移量 | 是 |
shadowOpacity | 陰影透明度,注意默認為0,如果設置陰影必須設置此屬性 | 是 |
shadowPath | 陰影的形狀 | 是 |
shadowRadius | 陰影模糊半徑 | 是 |
sublayers | 子圖層 | 是 |
sublayerTransform | 子圖層形變 | 是 |
transform | 圖層形變 | 是 |
---Jiang