CALayer常用属性整理

CALayer常用属性整理

  • 图层可以包含子图层。就像视图可以包含子视图,图层也可以有子图层,稍加利用就能打造漂亮的效果!
  • 图层属性自带动画效果。修改图层属性时,存在默认的动画效果,你也可以自定义动画行为。
  • 图层是轻量概念。相对视图而言,图层更加轻量,因此图层可以帮助提升性能。

代码块

 func setUpLayer() {
     //背景颜色
    l.backgroundColor = UIColor.blueColor().CGColor
    //边框宽度
    l.borderWidth = 100.0
    //边框颜色
    l.borderColor = UIColor.redColor().CGColor
    //阴影透明度
    l.shadowOpacity = 0.7
    //阴影宽度
    l.shadowRadius = 10.0
    //阴影偏移量
    l.shadowOffset = CGSize(width: 0, height: 3)
    //contents属性可以把图层的内容设为图片
    l.contents = UIImage(named: "star")?.CGImage
    //设置contents位置
    l.contentsGravity = kCAGravityCenter
    //使用过滤器,过滤器在图像利用contentsGravity放大时发挥作用,可用于改变大小(缩放、比例缩放、填充比例缩放)和位置(中心、上、右上、右等等)。以上属性的改变没有动画效果,另外如果geometryFlipped未设为true,几何位置和阴影会上下颠倒
    l.magnificationFilter = kCAFilterLinear
    l.geometryFlipped = false
  }

附加属性

CALayer还有两个附加属性有助于改善性能:shouldRasterize和drawsAsynchronously。

  • shouldRasterize默认为false,设为true可以改善性能,因为图层内容只需要一次渲染。相对画面中移动但自身外观不变的对象效果拔群。

  • drawsAsynchronously默认值也是false。与shouldRasterize相对,该属性适用于图层内容需要反复重绘的情况,此时设成true可能会改善性能,比如需要反复绘制大量粒子的粒子发射器图层

  • 谨记:如果想将已有图层的shouldRasterize或drawsAsynchronously属性设为true,一定要三思而后行,考虑可能造成的影响,对比true与false的性能差异,辨明属性设置是否有积极效果。设置不当甚至会导致性能大幅下降。

你可能感兴趣的:(CoreAnimation)