码迷,mamicode.com
首页 > 其他好文 > 详细

CALayer

时间:2016-05-12 14:48:06      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

  • 在iOS中,你能看到的东西基本上都是UIVIew,比如一个按钮,一个文本标签,一个图标等等,这些都是UIView

  • 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层

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

  • 当UIView需要显示到屏幕上时,会调用drawRect方法进行绘制,并且会讲所有的内容绘制到自己的图层上,绘制完成之后将图层拷贝到屏幕上,于是就完成了UIView的显示

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

  • 通过操作CALayer对象,可以很方便地调整UIView的一些外观属性

    。阴影
    。圆角大小
    。边框宽度和颜色

        // 设置阴影
        let viewR = UIView()
        viewR.frame = CGRectMake(10, 10, 200, 200)
        viewR.center = view.center
        self.view.addSubview(viewR)
        viewR.backgroundColor = UIColor.redColor()

        // 设置透明图
        // Opacity:不透明度
        viewR.layer.shadowOpacity = 1
        // 注意 图层的颜色都是核心绘图的框架
        viewR.layer.shadowRadius = 10

        // 圆角半径
        viewR.layer.cornerRadius  = 100

旋转和缩放

//        _tripView.layer.transform = CATransform3DMakeRotation(M_PI, 1, 1, 0);

        //缩放
//        _tripView.layer.transform = CATransform3DMakeScale(0.5, 0.5, 1);

        // 快速进行图层缩放  KVC x,
//        [_tripView.layer setValue:@0.5 forKeyPath:@"transform.scale"];

        [_tripView.layer setValue:@(M_PI) forKeyPath:@"transform.rotation"];

CALayer的issue:

  • CALayer是定义在QuartzCore框架中的
  • CGImageRef、CGColorRef两种数据类型是定义在CoreGraphics框架中
  • UIColor、UIImage是定义在UIKit框架中的
  • QuartzCore框架和CoreGraphic框架是可以跨平台使用的,mac和iOS上面都可以用

UIView和CALayer的选择:
1、两者可以实现相同的界面效果
2、对比CALayer,UIView多了一个时间处理功能,也就是说,CALayer不能处理用户的触摸事件,而UIView可以
3、所以,如果显示出来的东西需要跟用户进行交互的话,用UIView;如果不需要跟用户交互的话,用两者都是可以的
4、CALayer的性能会高一些,因为它少了事件处理的功能,更加轻量化

CALayer有2个非常重要的属性:position 和 anchorPoint

  • @property CGPoint position
  • 用来设置CALayer在父层中的位置
  • 以服曾的左上角未原点
  • @property CGPoint anchorPoint;
  • 称为 “定位点”、“锚点”
  • 决定着CALayer身上的那个点会在position属性所知的位置
  • 抑制剂的左上角为原点
  • 它的x\y取值范围都是0~1,默认值为(0.5,0.5)

隐式动画

  • 每一个UIView内部都默认关联这一个CALayer,我们可用称这个Layer为Root Layer (根层)
  • 所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画
  • 隐式动画:
    – 当对非 Root Layer的部分属性进行修改时,默认会自动产生一些动画效果
    – 而这些属性成为 Animatable Properties(可动画属性) (判断一个属性是否有这样的属性的时候,可以查看是否有这样的一个属性)

CALayer

标签:

原文地址:http://blog.csdn.net/u014275966/article/details/51363178

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!