图层(CALayer)

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

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

@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 )
它的 x y 取值范围都是 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 框架中的
CGImageRef CGColorRef 两种数据类型是定义在 CoreGraphics 框架中的
UIColor UIImage 是定义在 UIKit 框架中的
其次
QuartzCore 框架和 CoreGraphics 框架是可以跨平台使用的,在 iOS Mac 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值