iOS 開發值CALayer

使用核心動畫 需導入QuartzCore 框架(現在不需要)

 #import <QuartzCore/QuartzCore.h>

 

 Core Animation 核心動畫 CA

 

 CALayer 和 UIView 的關係

 

 UIView 中有一個layer屬性作爲根圖層,根圖層沒有隱式動畫,根圖層上可以放其他子視圖,在UIView中能夠看到的內容都包含在layer

 CALayer 負責視圖上顯示的內容和動畫

 UIView負責監聽和響應事件

 

 CALayer在修改他的屬性時都能形成動畫效果  這種動畫效果  叫做隱式動畫。

 由於CALayer在設計之初就考慮它的動畫操作功能,CALayer很多屬性在修改時都能形成動畫效果,這種屬性稱爲隱式動畫屬性

 

 

 --------------------------------------------------------

 CALayer常用屬性 

 

 屬性 說明  是否支持隱式動畫

 anchorPoint 錨點、定位點  錨點的描述是相對於 *自己* xy位置比例而言的 默認在圖像中心點(0.5,0.5)的位置  決定圖層的哪一個點 顯示在中心點的位置

 backgroundColor 圖層背景顏色

 borderColor 邊框顏色

 borderWidth 邊框寬度

 bounds 圖層大小

 contents 圖層顯示內容,例如可以將圖片作爲圖層內容顯示

 contentsRect 圖層顯示內容的大小和位置

 cornerRadius 圓角半徑

 doubleSided 圖層背面是否顯示,默認爲YES

 frame 圖層大小和位置,不支持隱式動畫,所以CALayer中很少使用frame,通常使用boundsposition代替

 hidden 是否隱藏

 mask 圖層蒙版

 maskToBounds 子圖層是否剪切圖層邊界,默認爲NO

 opacity 透明度 ,類似於UIViewalpha

 position 決定圖層在父視圖的位置 圖層位於 *父視圖* 中心點位置,類似於UIViewcenter

 shadowColor 陰影顏色

 shadowOffset 陰影偏移量

 shadowOpacity 陰影透明度,注意默認爲0,如果設置陰影必須設置此屬性

 shadowPath 陰影的形狀

 shadowRadius 陰影模糊半徑

 sublayers 子圖層

 sublayerTransform 子圖層形變

 transform 圖層形變


一、CALayer 的初始化及其常用屬性

<span style="font-size:14px;color:#333333;">    myLayer = [[CALayer alloc]init];
    myLayer.backgroundColor = [UIColor redColor].CGColor;
    myLayer.bounds = CGRectMake(0, 0, 100, 100);
//    設置中心點
    myLayer.position = self.view.center;
    
//    設置圓
    myLayer.cornerRadius = 100/2;
    myLayer.borderWidth = 2;
    myLayer.borderColor = [UIColor whiteColor].CGColor;
    myLayer.shadowColor = [UIColor yellowColor].CGColor;
    myLayer.shadowOffset = CGSizeMake(-1, -1);
//    設置陰影顏色,必須設置 shadowOpacity 陰影顏色的透明度(默認是0,完全透明)
    myLayer.shadowOpacity = 1.0;
    
</span><span style="font-size:14px;color:#ff0000;">//    子圖層 是添加到根圖層上的</span><span style="font-size:14px;color:#333333;">
    [self.view.layer addSublayer:myLayer];</span>

二、圖層覆蓋,重疊

1、先定義一個圖層

<span style="font-size:14px;">    myLayer = [[CALayer alloc]init];
 
    myLayer.backgroundColor = [UIColor brownColor].CGColor;
    myLayer.shadowColor = [UIColor redColor].CGColor;
    myLayer.shadowOpacity = 1; // 如果不設置透明度的話,不會顯示在設備上,默認爲0,改爲1.
    width = 100;
    myLayer.bounds = CGRectMake(0, 0, width, width);
    myLayer.position = self.view.center;
    myLayer.cornerRadius = width/2;
    myLayer.borderWidth = 2;
    myLayer.borderColor = [UIColor whiteColor].CGColor;
    myLayer.shadowOffset = CGSizeMake(-1, -1);
    
    [self.view.layer addSublayer:myLayer];</span>

2、定義第二個圖層覆蓋在第一個上

<span style="font-size:14px;"><span style="color:#33cc00;">    imageLayer = [[CALayer alloc]init];
   
    imageLayer.shadowOpacity = 1; // 如果不設置透明度的話,不會顯示在設備上,默認爲0,改爲1.

    </span><span style="color:#ff6600;">imageLayer.bounds = myLayer.bounds;
    imageLayer.position = myLayer.position;
    imageLayer.cornerRadius = myLayer.cornerRadius;</span><span style="color:#33cc00;">

    imageLayer.contents = (id)([UIImage imageNamed:@"105.jpg"].CGImage);
    imageLayer.masksToBounds = YES;
    
    [self.view.layer addSublayer:imageLayer];</span></span>









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章