只是簡單了解幾種子類
CAShapeLayer
CAShapeLayer是一個通過矢量圖形來繪制的圖層子類,繪圖可查看繪制相關方法
圓角可以使用CAShaperLayer自定制自己的圓角圖層,設置為視圖圖層的mask
CATextLayer
- @property(nullable, copy) id string;
文本呈現,默認為nil,可以是NSString類型或者NSAttributedString類型
- @property(nullable) CFTypeRef font;
字體使用,可能是一個CTFontRef,一個CGFontRef或者一個字符串命名體,默認為Helvetica字體;僅當string不是一個NSAttributedString的時候使用; - @property CGFloat fontSize;
字體大小,默認為36;僅當string不是一個NSAttributedString的時候使用; - @property CGColorRef foregroundColor;
用來繪制文本的顏色,默認為不透明的白色;僅當string不是一個NSAttributedString的時候使用; - @property(getter=isWrapped) BOOL wrapped;
文本自適應圖層大小,默認是NO; - @property(copy) NSString *truncationMode;
描述如何將字符串截斷以適應圖層大小,設置縮短的部位,可選擇沒有,開始,中間,和結束; - @property(copy) NSString *alignmentMode;
描述如何在該層中的單行的文本對齊,設置字體的排列格式,可選擇自然,左,右,居中和自適應; - @property CGFloat contentsScale;
使用CATextLayer設置文本,可能會產生模糊狀態,因為該默認的分辨率不是retina,設置如下代碼即可:
textLayer.contentsScale = [UIScreen mainScreen].scale;
CATransformLayer
可以盛放立方體對象
CAGradientLayer
CAReplicatorLayer
CAReplicatorLayer的目的是為了高效的生成許多相似的圖層
- @property NSInteger instanceCount;
拷貝的次數 - @property BOOL preservesDepth;
是否開啟景深效果 - @property CFTimeInterval instanceDelay;
當CAReplicatorLayer的子Layer層進行動畫的時候,拷貝的副本執行動畫的延時 - @property CATransform3D instanceTransform;
拷貝副本的3D變換 - @property(nullable) CGColorRef instanceColor;
拷貝副本的顏色變換 - @property float instanceRedOffset;
@property float instanceGreenOffset;
@property float instanceBlueOffset;
拷貝副本色色值變化,每次變化以上一次為基準 - @property float instanceAlphaOffset;
拷貝副本的透明度變化
CAScrollLayer
可用作UIScrollView的替代品,我們可以將CASrollLayer作為圖層的宿主圖層,自定義一個UIView,添加滑動手勢之后,就能顯示一個大于視圖frame的圖層
- (void)scrollToPoint:(CGPoint)p
把指定點p滾動到左上角。點坐標可以是負值。
- (void)scrollToRect:(CGRect)r
滾動使指定區域r。如果r.size > self.bounds.size,則r.size = self.bounds.size。
- (void)scrollPoint:(CGPoint)p
此方法是在CALayer的分類中實現。改方法是從自身開始往父圖層找到最近的CAScrollLayer層,然后調用-scrollToPoint:方法,如果沒有找到CAScrollLayer層則不做任何處理。
- (void)scrollRectToVisible:(CGRect)r
此方法是在CALayer的分類中實現。改方法是從自身開始往父圖層找到最近的CAScrollLayer層,然后調用-scrollToRect:方法,如果沒有找到CAScrollLayer層則不做任何處理。
以下幾種后續單獨學習
- CATiledLayer 可繪制高分辨率大圖或者PDF
- CAEmitterLayer 創建粒子動畫
- CAEAGLLayer 用來顯示任意的OpenGL圖形
- AVPlayerLayer 視頻播放層