91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

长阳| 青浦区| 磴口县| 沅江市| 巫山县| 泸溪县| 五大连池市| 洮南市| 依兰县| 南宁市| 麦盖提县| 广汉市| 深泽县| 肇庆市| 朝阳区| 大埔县| 临沧市| 巴彦淖尔市| 松潘县| 永靖县| 福海县| 沧州市| 蓬莱市| 宜都市| 凌云县| 孝感市| 义乌市| 温州市| 同心县| 犍为县| 武宣县| 无锡市| 石家庄市| 桃园县| 璧山县| 巴东县| 图片| 绵竹市| 保亭| 如皋市| 永兴县|