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

鎮(zhèn)樓專用

為了動畫和特效皱卓,CALayer屬性和使用的介紹是必不可少的裹芝。

一、CALayer的常用屬性

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

  • 2、 @property CGPoint anchorPoint;
    稱『定位點(diǎn)』穆桂、『錨點(diǎn)』宫盔,該描述是相對于x、y位置比例而言的默認(rèn)在圖像中心點(diǎn)(0.5享完、0.5)的位置;決定著CALayer身上的哪個(gè)點(diǎn)會再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
    圖層大小和位置,不支持隱式動畫褐捻,所以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對象,該對象代表對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動畫操作

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

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

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

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

  • 5拦坠、 - (void)removeAllAnimations
    移除所有動畫

五连躏、CALayer子類其他說明

子類名稱 用途
CAEmitterLayer 發(fā)射器層,用來控制粒子效果
CAGradientLayer 梯度層贞滨,顏色漸變
CAEAGLayer 用OpenGL ES繪制的層
CAReplicationLayer 用來自動復(fù)制sublayer
CAShapeLayer 繪制立體的貝塞爾曲線
CAScrollLayer 用來管理可滑動的區(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;最大斜接長度栏赴。斜接長度指的是在兩條線交匯處和外交之間的距離。只有l(wèi)ineJoin屬性為kCALineJoinMiter時(shí)miterLimit才有效靖秩。邊角的角度越小须眷,斜接長度就會越大。為了避免斜接長度過長沟突,我們可以使用miterLimit屬性花颗。如果斜接長度超過miterLimit的值,邊角會以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í)線長度刻肄,偶數(shù)位數(shù)值表示空白長度。
    注: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ù)制子層的延遲動畫時(shí)長

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

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

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

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

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桃移,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子封豪,更是在濱河造成了極大的恐慌谴轮,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吹埠,死亡現(xiàn)場離奇詭異第步,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缘琅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門粘都,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刷袍,你說我怎么就攤上這事翩隧。” “怎么了呻纹?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵堆生,是天一觀的道長。 經(jīng)常有香客問我雷酪,道長淑仆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任哥力,我火速辦了婚禮蔗怠,結(jié)果婚禮上墩弯,老公的妹妹穿的比我還像新娘。我一直安慰自己寞射,他們只是感情好渔工,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桥温,像睡著了一般引矩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上策治,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天脓魏,我揣著相機(jī)與錄音,去河邊找鬼通惫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛混蔼,可吹牛的內(nèi)容都是我干的履腋。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼惭嚣,長吁一口氣:“原來是場噩夢啊……” “哼遵湖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起晚吞,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤延旧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后槽地,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迁沫,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年捌蚊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了集畅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缅糟,死狀恐怖挺智,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情窗宦,我是刑警寧澤赦颇,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站赴涵,受9級特大地震影響媒怯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜句占,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一沪摄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦杨拐、人聲如沸祈餐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帆阳。三九已至,卻和暖如春屋吨,著一層夾襖步出監(jiān)牢的瞬間蜒谤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工至扰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鳍徽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓敢课,卻偏偏與公主長得像阶祭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子直秆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容