美文网首页
一、CALayer基础

一、CALayer基础

作者: faterman | 来源:发表于2018-01-26 12:01 被阅读10次

    iOS坐标系详解
    CALayer基础 By M了个J

    在iOS系统中构建用户图形界面的内容一般都是UIView,比如按钮,文本标签,文本输入框,一个图标,这些其实都是UIView对应的子类。UIView之所以能显示在屏幕上,是因为内部有一个layer。iOS系统是以层为基本单位向屏幕来进行绘制的。

    在创建UIView对象的时候,UIView内部会自动创建一个层(CALayer对象,可称之为root layer),通过UIView的layer属性可以访问到这个层。当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有的内容绘制到自己的层上,绘图完毕后,系统会将层拷贝到屏幕上,最终完成UIView的显示。

    Layer基本使用

    1.设置阴影
    imageView.layer.shadowColor  = [UIColor grayColor].CGColor;
    imageView.layer.shadowOffset = CGSizeMake(10, 10);
    imageView.layer.shadowOpacity = 0.5; 
    

    shadowColor代表了层阴影的颜色。

    shaowOffset代表了层阴影的偏移量,当前这种设置方式会向右下角偏移。

    shaowOpcity代表了阴影的透明度,此处设置为半透明

    阴影的绘制是在原来基础向外的

    2.设置圆角
    imageView.layer.cornerRadius = 10;
    imageView.layer.masksToBounds = YES;
    

    第一行设置的是圆角半径

    第二行是内容根据外层mask,来显示

    如果设置了masksToBounds = YES,此时阴影效果就不会出现了

    3.设置边框和颜色
    imageView.layer.borderWidth = 5;
    imageView.layer.borderColor = [UIColor redColor].CGColor;
    

    第一行设置边框宽度是5

    第二行设置边框颜色为红色

    边框绘制是向内绘制的

    4.设置旋转
    imageView.layer.transform = CATransform3DMakeRotation(M_PI_4, 0, 0, 1);
    

    M_PI_4 表示旋转45度

    后面的(0,0,1)表示这是个z轴向量

    CATransform3D
    CATransform3D 特效详解

    创建Layer

    UIView及其子类在创建时会有一个layer,这个默认的层是不允许重新创建的,但是可以在这个层上添加子层。

    1.添加一个Layer
    _myLayer = [CALayer layer];
    // 设置层的宽度和高度(100x100)
    _myLayer.bounds = CGRectMake(0, 0, 100, 100);
    // 设置层的位置
    _myLayer.position = CGPointMake(100, 100);
    // 设置层的背景颜色:红色
    _myLayer.backgroundColor = [UIColor redColor].CGColor;
    // 设置层的圆角半径为10
    _myLayer.cornerRadius = 10;
    // 添加myLayer到控制器的view的layer中
    [self.view.layer addSublayer:_myLayer];
    
    2.创建一个显示图片的图层
    _myLayer = [CALayer layer];
    // 设置层的宽度和高度(100x100)
    _myLayer.bounds = CGRectMake(0, 0, 100, 100);
    // 设置层的位置
    _myLayer.position = CGPointMake(100, 100);
    // 设置层的背景颜色:红色
    _myLayer.backgroundColor = [UIColor redColor].CGColor;
    // 设置层的圆角半径为10
    _myLayer.cornerRadius = 10;
    _myLayer.contents = (id)[UIImage imageNamed:@"test.png"].CGImage;
    [self.view.layer addSublayer:_myLayer];
    

    相关文章

      网友评论

          本文标题:一、CALayer基础

          本文链接:https://www.haomeiwen.com/subject/xsuiaxtx.html