图层(CALayer)

原创 2015年11月19日 14:16:20

先了解下什么是图层(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.获取话说:自己把图片转换成有圆角的图片,再显示
     */





IOS图层Layer学习笔记(二)—— CALayer(上)

CALayer是所有图层的基类。主要是一些基本显示属性(位置、锚点、颜色、透明度等)、层次关系(子图层和父图层)、基本动画等。 接下来分别从常用属性、类方法和实例方法来介绍CALayer的使用。顺序...
  • st646889325
  • st646889325
  • 2016年11月01日 11:32
  • 488

CALayer 异步绘制

UIKit的单线程天性意味着寄宿图通畅要在主线程上更新,这意味着绘制会打断用户交互,甚至让整个app看起来处于无响应状态。我们对此无能为力,但是如果能避免用户等待绘制完成就好多了。 针对这个问题,有...
  • bravegogo
  • bravegogo
  • 2016年04月04日 16:37
  • 700

IOS图层Layer学习笔记(二)—— CALayer(上)

CALayer是所有图层的基类。主要是一些基本显示属性(位置、锚点、颜色、透明度等)、层次关系(子图层和父图层)、基本动画等。...
  • xiepanqi
  • xiepanqi
  • 2015年11月23日 23:20
  • 1235

CALayer创建图层

一.添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来)...
  • dubo413392749
  • dubo413392749
  • 2016年04月15日 17:39
  • 117

iOS —— CALayer 创建图层

添加一个图层 添加图层的步骤: 1.创建layer 2.设置layer的属性(设置了颜色,bounds才能显示出来) 3.将layer添加到界面上(控制器view的layer上)...
  • ci915194561
  • ci915194561
  • 2015年11月29日 21:13
  • 184

iOS CALayer视图图层

在iOS中都会牵扯到图形转换,动画效果,添加视图,等等的一系列问题,在设计页面,设计图形,添加动画的时候都会使用到这个知识。 简单的说他就是视图的图层,但又不是视图,因为视图可以和用户交互,添加响应...
  • qq_29050533
  • qq_29050533
  • 2016年04月19日 16:46
  • 1273

CALayer 图层简介

CALayer 简介
  • Alpaca12
  • Alpaca12
  • 2016年07月03日 16:44
  • 217

CALayer(二)创建新图层

UIView内部有一个图层,通过访问UIView的layer属性能够访问UIView的图层,进入UIView的头文件查看layer属性, @property(nonatomic,readonly,re...
  • u013794726
  • u013794726
  • 2015年07月05日 10:23
  • 251

(一一九)通过CALayer实现阴影、圆角、边框和3D变换

在每个View上都有一个CALayer作为父图层,View的内容作为子层显示,通过layer的contents属性决定了要显示的内容,通过修改过layer的一些属性可以实现一些华丽的效果。 下面以一个...
  • xyt8023y
  • xyt8023y
  • 2015年08月12日 20:41
  • 1471

用CALayer绘图

在iOS中绘图,可以使用UIView,也可以使用CALayer。实际上,UIView也是由底层的CALayer完成绘制的工作 UIView和CALayer的关系每个UIView内部都有一个CALay...
  • kyfxbl
  • kyfxbl
  • 2016年02月06日 22:42
  • 792
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图层(CALayer)
举报原因:
原因补充:

(最多只允许输入30个字)