关闭

图层(CALayer)

标签: CALayer
153人阅读 评论(0) 收藏 举报
分类:

先了解下什么是图层(CALayer)

其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层
在创建UIView对象时,UIView内部会自动创建一个图层(CALayer对象),通过UIViewlayer属性可以访问这个层

@property(nonatomic,readonly,retain) CALayer *layer;


UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示
换句话说,UIView本身不具备显示的功能,是它内部的层才有显示功能
CALayer的属性

宽度和高度

@property CGRect  bounds;


位置(默认指中点,具体由anchorPoint决定)
用来设置CALayer在父层中的位置
以父层的左上角为原点(0, 0)

@property CGPoint  position;


锚点(x,y的范围都是0-1),决定了position的含义
称为定位点、“锚点”
定着CALayer身上的哪个点会在position属性所指的位置
以自己的左上角为原点(0, 0)
它的xy取值范围都是0~1默认值为0.5, 0.5

@property CGPoint  anchorPoint;


背景颜(CGColorRef类型)

@property CGColorRef  backgroundColor;


形变属性

@property CATransform3D  transform;


边框颜(CGColorRef类型)

@property CGColorRef  borderColor;


边框宽度

@property CGFloat  borderWidth;


半径

@property CGColorRef  borderColor;


内容(比如设置为图片CGImageRef)

@property(retain) id  contents;



CALayer两个重要的属性:positionanchorPoint


关于CALayer细节

首先
CALayer是定义在QuartzCore框架中的
CGImageRefCGColorRef两种数据类型是定义在CoreGraphics框架中的
UIColorUIImage是定义在UIKit框架中的
其次
QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOSMac OS X上都能使用
UIKit只能在iOS使用
为了保证可移植性,QuartzCore不能使用UIImageUIColor,只能使用CGImageRefCGColorRef

简单使用:

 // 设置尺寸
    self.redView.layer.bounds = CGRectMake(0, 0, 100, 100);

    // 设置边框的宽度
    self.redView.layer.borderWidth = 10;
    // 设置边框颜色
    self.redView.layer.borderColor = [UIColor yellowColor].CGColor;

    // 设置背景颜色
    self.redView.layer.backgroundColor = [UIColor greenColor].CGColor;
    
    // 设置圆角效果
//    self.redView.layer.cornerRadius = 30;
    // 剪掉圆角以外的部分
//    self.redView.layer.masksToBounds = YES;
    
    // 设置阴影的颜色
    self.redView.layer.shadowColor = [UIColor redColor].CGColor;
    // 设置阴影的透明度
    self.redView.layer.shadowOpacity = 0.5;
    // 阴影的位置(以redView左上角为原点)
    self.redView.layer.shadowOffset = CGSizeMake(100, 100);
    
    /*
     *1.如果你设置了masksToBounds为YES,阴影是不出,原因,阴影也被切掉了
     *2.如果你想有圆角的效果,又想有阴影,图片本来就有圆角效果
     *3.获取话说:自己把图片转换成有圆角的图片,再显示
     */





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:13085次
    • 积分:621
    • 等级:
    • 排名:千里之外
    • 原创:51篇
    • 转载:4篇
    • 译文:0篇
    • 评论:0条
    文章分类