中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CALayer的那些事(一)

發布時間:2020-08-02 07:59:55 來源:網絡 閱讀:369 作者:Jacksun2Coshine 欄目:開發技術

        CALayer對于工作過一段時間的程序員來說一定是熟悉的不能再熟悉了,但是對于一些接觸iOS并不久的人來說還是比較新鮮的,就像我。再加上之前在學習時并沒有接觸過CALayer,所以這個東西對我來說完全就是新東西了。花了點時間看了下,就此總結一些需要注意的地方,以便日后用到時再詳閱。

    

使用前需要注意的:


1.UIView和CALayer的選擇

其實,對比CALayer,UIView多了一個事件處理的功能。也就是說,CALayer不能處理用戶的觸摸事件,而UIView可以。

所以,在選擇的過程中,需要考慮到實際的情況,如果顯示出來的東西需要跟用戶進行交互的話,用UIView;如果不需要跟用戶進行交互,用UIView或者CALayer都可以

當然,CALayer的性能會高一些,因為它少了事件處理的功能,更加輕量級

2.CGColorRef和CGImageRef數據類型

CALayer是定義在QuartzCore框架中的;CGImageRef、CGColorRef兩種數據類型是定義在CoreGraphics框架中的;UIColor、UIImage是定義在UIKit框架中的

其次,QuartzCore框架和CoreGraphics框架是可以跨平臺使用的,在iOS和Mac OS X上都能使用,但是UIKit只能在iOS中使用

因此,為了保證可移植性,QuartzCore不能使用UIImage、UIColor,只能使用CGImageRef、CGColorRef

不過很多情況下,可以通過UIKit對象的特定方法,得到CoreGraphics對象,比如UIImage的CGImage方法可以返回一個CGImageRef

3.CALayer訪問子層和父層

      UIView可以通過subviews屬性訪問所有的子視圖,類似地,CALayer也可以通過sublayers屬性訪問所有的子層

    UIView可以通過superview屬性訪問父視圖,類似地,CALayer也可以通過superlayer屬性訪問父層

特別注意:如果一個控件是另外一個控件的子控件,那么這個控件的layer也是另一個控件的子layer。


使用時需要注意的:

   一、屬性

CALayer有2個非常重要的屬性:position和anchorPoint

@property CGPoint position;

用來設置CALayer在父層中的位置

以父層的左上角為原點(0, 0)

 

@property CGPoint anchorPoint;

稱為“定位點”、“錨點”

決定著CALayer身上的哪個點會在position屬性所指的位置

以自己的左上角為原點(0, 0)

它的x、y取值范圍都是0~1,默認值為(0.5, 0.5)


二、隱式動畫

每一個UIView內部都默認關聯著一個CALayer,我們可用稱這個Layer為Root Layer(根層)

所有的非Root Layer,也就是手動創建的CALayer對象,都存在著隱式動畫

什么是隱式動畫?

當對非Root Layer的部分屬性進行修改時,默認會自動產生一些動畫效果

而這些屬性稱為Animatable Properties(可動畫屬性)

 

列舉幾個常見的Animatable Properties:

bounds:用于設置CALayer的寬度和高度。修改這個屬性會產生縮放動畫

backgroundColor:用于設置CALayer的背景色。修改這個屬性會產生背景色的漸變動畫

position:用于設置CALayer的位置。修改這個屬性會產生平移動畫

    

關閉隱式動畫 

[CATransaction begin];    
[CATransaction setDisableActions:YES];     //隱式動畫    
 self.layer.bounds=CGRectMake(0, 0, 200, 60);
 self.layer.backgroundColor=[UIColor yellowColor].CGColor;
[CATransaction commit];


可以查看頭文件,看有沒有Animatable,如果有則表示支持隱式動畫。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临夏市| 嘉祥县| 天全县| 永顺县| 江西省| 高雄县| 阳山县| 怀化市| 大悟县| 云龙县| 津市市| 竹山县| 北宁市| 河东区| 墨竹工卡县| 沾益县| 南京市| 宁强县| 岳阳县| 嘉义市| 宁明县| 安徽省| 台中县| 余干县| 东台市| 霍州市| 纳雍县| 嘉善县| 应用必备| 蒙自县| 全南县| 都匀市| 改则县| 大田县| 襄垣县| 五寨县| 兴安盟| 神农架林区| 上犹县| 健康| 甘孜县|