iOS-CALayer的介绍

 

一 、CALayer介绍

  • 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView
  •  其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层
  • 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层

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

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

二、CALayer的基本使用

  • 通过操作CALayer对象,可以很方便地调整UIView的一些外观属性
  • 还可以给图层添加动画,来实现一些比较炫酷的效果

三、CALayer的属性

  • 宽度和高度

  @property CGRect bounds;

  • 位置(默认指中点,具体由anchorPoint决定)

  @property CGPoint position;

  •  锚点(x,y的范围都是0-1),决定了position的含义

  @property CGPoint anchorPoint;

  •  背景颜色(CGColorRef类型)

  @property CGColorRef backgroundColor;

  •  形变属性

  @property CATransform3D transform;

  • 边框颜色(CGColorRef类型)

  @property CGColorRef borderColor;

  •  边框宽度

  @property CGFloat borderWidth;

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

  @property(retain) id contents;

  在此介绍CALayer有2个非常重要的属性:position和anchorPoint

  @property CGPoint position;

  用来设置CALayer在父层中的位置,以父层的左上角为原点(0, 0)

  @property CGPoint anchorPoint;

  称为“定位点”、“锚点”

  决定着CALayer身上的哪个点会在position属性所指的位置

  以自己的左上角为原点(0, 0)

  它的x、y取值范围都是0~1,默认值为(0.5, 0.5)

 四、关于CALayer的疑惑

  首先

  • CALayer是定义在QuartzCore框架中的
  • CGImageRef、CGColorRef两种数据类型是定义在CoreGraphics框架中的
  • UIColor、UIImage是定义在UIKit框架中的

   其次

  • QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOS和Mac OS X上都能使用
  • 但是UIKit只能在iOS中使用

   为了保证可移植性,QuartzCore不能使用UIImage、UIColor,只能使用CGImageRef、CGColorRef

posted @ 2015-09-27 21:33  优雅程序员  阅读(225)  评论(0编辑  收藏  举报