CALayer的屬性和使用(持續(xù)更新)

鎮(zhèn)樓專用

為了動(dòng)畫和特效,CALayer屬性和使用的介紹是必不可少的。

一、CALayer的常用屬性

  • 1、@propertyCGPoint position;
    圖層中心點(diǎn)的位置,類似與UIView的center;用來設(shè)置CALayer在父層中的位置;以父層的左上角為原點(diǎn)(0,0)

  • 2、 @property CGPoint anchorPoint;
    稱『定位點(diǎn)』、『錨點(diǎn)』,該描述是相對(duì)于x、y位置比例而言的默認(rèn)在圖像中心點(diǎn)(0.5、0.5)的位置;決定著CALayer身上的哪個(gè)點(diǎn)會(huì)再position屬性所指的位置,以自己的左上角為原點(diǎn)(0,0);它的x、y取值范圍都是0~1

  • 3、 @property(nullable) CGColorRef backgroundColor
    圖層背景顏色

  • 4、 @property(nullable) CGColorRef borderColor
    圖層邊框顏色

  • 5、 @property CGFloat borderWidth
    圖層邊框?qū)挾?/p>

  • 6、 @property CGRect bounds
    圖層大小

  • 7、 @property(nullable, strong) id contents
    圖層顯示內(nèi)容,例如可以將圖片作為圖層內(nèi)容顯示

  • 8、 @property CGRect contentsRect
    圖層顯示內(nèi)容的大小和位置

  • 9、 @property CGFloat cornerRadius
    圓角半徑

  • 10、 @property(getter=isDoubleSided) BOOL doubleSided
    圖層背景是否顯示,默認(rèn)是YES

  • 11、 @property CGRect frame
    圖層大小和位置,不支持隱式動(dòng)畫,所以CALyaer中很少使用frame,通常使用bound和position代替

  • 12、 @property(getter=isHidden) BOOL hidden
    是否隱藏

  • 13、 @property(nullable, strong) CALayer *mask
    圖層蒙版

  • 14、 @property BOOL masksToBounds
    子圖層是否剪切圖層邊界,默認(rèn)是NO

  • 15、 @property float opacit;
    圖層透明度,類似與UIView的alpha

  • 16、 @property(nullable) CGColorRef shadowColor
    陰影顏色

  • 17、 @property CGSize shadowOffset
    陰影偏移量

  • 18、 @property float shadowOpacity
    陰影透明度,注意默認(rèn)為0,如果設(shè)置陰影必須設(shè)置此屬性

  • 19、 @property(nullable) CGPathRef shadowPath
    陰影形狀

  • 20、 @property CGFloat shadowRadius
    陰影模糊半徑

  • 21、 @property(nullable, copy) NSArray

二、CALayer不常用屬性

  • 1、 @property CGFloat zPosition
    圖層中心點(diǎn)在z軸中的位置

  • 2、 @property CGFloat anchorPointZ
    圖層在z軸中的錨點(diǎn);

  • 3、 - (CGAffineTransform)affineTransform

  • 4、- (void)setAffineTransform:(CGAffineTransform)m
    以上屬性為圖層形變;該屬性值指定一個(gè)CGAffineTransform對(duì)象,該對(duì)象代表對(duì)CALayer執(zhí)行X、Y兩個(gè)維度(也就是平面)上的旋轉(zhuǎn)、縮放、位移、斜切、鏡像等變換矩陣

  • 5、 @property(nullable, readonly) CALayer *superlayer
    圖層的父圖層

三、CALayer圖層操作

  • 1、 - (void)addSublayer:(CALayer *)layer
    添加子圖層

  • 2、 - (void)removeFromSuperlayer
    將自己從父圖層中移除

  • 3、 - (void)insertSublayer:(CALayer *)layer atIndex:(unsigned)idx
    在自己子圖層數(shù)組中的第idx位置添加圖層

  • 4、 - (void)insertSublayer:(CALayer )layer below:(nullable CALayer )sibling
    將圖層layer添加在子圖層sibling的下面

  • 5、 - (void)insertSublayer:(CALayer )layer above:(nullable CALayer )sibling
    將圖層layer添加在子圖層sibling的上面

  • 6、 - (void)replaceSublayer:(CALayer )layer with:(CALayer )layer2
    將圖層layer替換layer2;

四、CALayer動(dòng)畫操作

  • 1、 - (void)addAnimation:(CAAnimation )anim forKey:(nullable NSString )key
    圖層添加某一屬性的動(dòng)畫

  • 2、 - (nullable NSArray< NSString > )animationKeys
    獲取所有動(dòng)畫的屬性

  • 3、 - (nullable CAAnimation )animationForKey:(NSString )key
    獲取某一屬性的動(dòng)畫

  • 4、 - (void)removeAnimationForKey:(NSString *)key
    移除某一屬性動(dòng)畫

  • 5、 - (void)removeAllAnimations
    移除所有動(dòng)畫

五、CALayer子類其他說明

子類名稱 用途
CAEmitterLayer 發(fā)射器層,用來控制粒子效果
CAGradientLayer 梯度層,顏色漸變
CAEAGLayer 用OpenGL ES繪制的層
CAReplicationLayer 用來自動(dòng)復(fù)制sublayer
CAShapeLayer 繪制立體的貝塞爾曲線
CAScrollLayer 用來管理可滑動(dòng)的區(qū)域
CATextLayer 可以繪制AttributeString
CATiledLayer 用來管理一副可以被分割的大圖
CATransformLayer 用來渲染3D layer的層次結(jié)構(gòu)

1. CAShapeLayer

CAShapeLayer屬于QuartzCore框架,繼承自CALayer。CAShapeLayer是在坐標(biāo)系內(nèi)繪制貝塞爾曲線的,通過繪制貝塞爾曲線,設(shè)置shape(形狀)的path(路徑),從而繪制各種各樣的圖形以及不規(guī)則圖形。因此,使用CAShapeLayer需要與UIBezierPath一起使用。
UIBezierPath類允許你在自定義的 View 中繪制和渲染由直線和曲線組成的路徑.。你可以在初始化的時(shí)候直接為你的UIBezierPath指定一個(gè)幾何圖形。
通俗點(diǎn)就是UIBezierPath用來指定繪制圖形路徑,而CAShapeLayer就是根據(jù)路徑來繪圖的。

屬性

  • 1、@property(nullable) CGPathRef path; 呈現(xiàn)的形狀的路徑

  • 2、@property(nullable) CGColorRef fillColor;填充路徑的顏色

  • 3、@property(copy) CAShapeLayerFillRule fillRule; 當(dāng)在填充顏色的時(shí)候則就需要這種填充規(guī)則,值有兩種,非零和奇偶數(shù),但默認(rèn)是非零值。

  • 4、@property(nullable) CGColorRef strokeColor;設(shè)置描邊色,默認(rèn)無色。

  • 5、@property CGFloat strokeStart; 繪制邊線輪廓路徑的子區(qū)域。該值必須在[0,1]范圍,0代表路徑的開始,1代表路徑的結(jié)束。 默認(rèn)為0

  • 6、@property CGFloat strokeEnd; 默認(rèn)為1

  • 7、@property CGFloat lineWidth; 線的寬度 默認(rèn)為1

  • 8、@property CGFloat miterLimit;最大斜接長(zhǎng)度。斜接長(zhǎng)度指的是在兩條線交匯處和外交之間的距離。只有l(wèi)ineJoin屬性為kCALineJoinMiter時(shí)miterLimit才有效。邊角的角度越小,斜接長(zhǎng)度就會(huì)越大。為了避免斜接長(zhǎng)度過長(zhǎng),我們可以使用miterLimit屬性。如果斜接長(zhǎng)度超過miterLimit的值,邊角會(huì)以lineJoin的“bevel”即kCALineJoinBevel類型來顯示。

  • 9、@property(copy) CAShapeLayerLineCap lineCap; 線端點(diǎn)類型,值有三個(gè)類型,分別為kCALineCapButt 、kCALineCapRound 、kCALineCapSquare,默認(rèn)值為Butt;

  • 10、@property(copy) CAShapeLayerLineJoin lineJoin;lineJoin為線連接類型,其值也有三個(gè)類型,分別為kCALineJoinMiter、kCALineJoinRound、kCALineJoinBevel,默認(rèn)值是Miter。

  • 11、@property CGFloat lineDashPhase;為線型模版的起始位置;lineDashPattern為線性模版,這是一個(gè)NSNumber的數(shù)組,索引從1開始記,奇數(shù)位數(shù)值表示實(shí)線長(zhǎng)度,偶數(shù)位數(shù)值表示空白長(zhǎng)度。
    注:fillColor與strokeColor都是在有UIBezierPath參數(shù)配置的情況下才能發(fā)生作用

  • 12、@property(nullable, copy) NSArray<NSNumber *> *lineDashPattern;

2.CAReplicationLayer

屬性

  • 1、@property NSInteger instanceCount; 復(fù)制subLayer個(gè)數(shù),默認(rèn)為1

  • 2、@property BOOL preservesDepth; 是否將3D例子系統(tǒng)平面化到一個(gè)圖層(默認(rèn)值)或者可以在3D空間中混合其他的圖層

  • 3、@property CFTimeInterval instanceDelay; 設(shè)置復(fù)制子層的延遲動(dòng)畫時(shí)長(zhǎng)

  • 4、@property CATransform3D instanceTransform; 設(shè)置復(fù)制子層的相對(duì)位置

  • 5、@property(nullable) CGColorRef instanceColor; 子層顏色,會(huì)和原生子層背景色沖突,因此二者選其一設(shè)置

  • 6、@property float instanceRedOffset;
    設(shè)置每個(gè)復(fù)制圖層相對(duì)上一個(gè)復(fù)制圖層的紅色偏移量

  • 7、@property float instanceRedOffset;
    設(shè)置每個(gè)復(fù)制圖層相對(duì)上一個(gè)復(fù)制圖層的綠色偏移量

  • 8、@property float instanceBlueOffset;設(shè)置每個(gè)復(fù)制圖層相對(duì)上一個(gè)復(fù)制圖層的藍(lán)色偏移量

  • 9、@property float instanceAlphaOffset;設(shè)置每個(gè)復(fù)制圖層相對(duì)上一個(gè)復(fù)制圖層的透明度偏移量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容