CALayer

来源:互联网 发布:单片机原理及应用林立 编辑:程序博客网 时间:2024/06/06 01:51

CALayer

标签(空格分隔): UI


[MJ博客]: http://www.cnblogs.com/mjios/archive/2013/04/13/3019335.html “”

隐式动画

  • 只有非rootCalyer(根层)才有隐式动画。
  • position:layer在父控件中的位置,以父层的左上角为原点(0, 0)

  • anchorPoint:layer的锚点(它的x、y取值范围都是0~1,默认值为(0.5, 0.5)
    )图层的中心)以自己的左上角为原点(0, 0)

  • 在创建控件对象时,控件内部会自动创建一个图层(即CALayer对象),通过控件的layer属性可以访问这个层

  • 控件本身不具备显示的功能,是它内部的层才有显示功能

关于CALayer的疑惑

  • 首先

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

    • QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOS和Mac OS X上都能使用
    • 但是UIKit只能在iOS中使用
  • 为了保证可移植性,QuartzCore不能使用UIImage、UIColor,只能使用CGImageRef、CGColorRef

UIView和CALayer的选择

  • 通过CALayer,就能做出跟UIImageView一样的界面效果

  • 其实,对比CALayer,UIView多了一个事件处理的功能。也就是说,CALayer不能处理用户的触摸事件,而UIView可以

  • 所以,如果显示出来的东西需要跟用户进行交互的话,用UIView;如果不需要跟用户进行交互,用UIView或者CALayer都可以
  • 当然,CALayer的性能会高一些,因为它少了事件处理的功能,更加轻量级

CATransaction(动画事务)

  • 动画都是包装到事务
  • 开启事务
[CATransaction begin];
  • 提交事务
[CATransaction commit];
  • 是否需要隐式动画
[CATransaction setDisableActions:YES];
0 0
原创粉丝点击