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>









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