CALayer 的简单使用
2016-08-25 00:00
134 查看
CALayer是被定义在QuartzCore中,因此想要使用CALayer就要导入该框架,并在代码前导入框架的头文件
2,当UIView需要显示在屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的层上,绘图完毕后。系统将会层拷贝在屏幕上,于是完成UIView的显示。
3,换句话说,UIView不具备显示功能,是它内部的层才有显示功能。
2,设置圆角
3,设置边框
4,设置旋转
2,如果需要用户进行交互,使用UIView.如果不需要,用UIView和CALayer都可以
3, CALayer的性能会高一些,因为它少了事件处理功能,更加轻量级。
4, UIView可以通过subviews属性访问所有的子视图,CALayer可以通过sublayer属性访问所有子层
2,如果两个UIView是父子关系,那么他们内部的CAlayer也是父子关系
2,对非根层的部分属性进行修改时,默认会自动产生一些动画,如bounds会产生缩放动画;positon会产生平移动画。
3,position可以用来设置CALayer在父层中的位置,它是以父层左上角为坐标原点(0,0);
4,anchorPoint称之为“定位点”,他决定这CALayer身上的那个点会在position属性所指的位置,它的x、y取值范围是0-1,默认(0.5,0.5);
2,不论采用哪种方式自定义层,都必须调用CALayer的setNeedsDisplay方法才能正常绘图
一,什么是CALayer
1,在创建UIView对象时,UIView内部会自动创建一个层(CALayer对象,通过UIView的layer属性可以访问这个层。2,当UIView需要显示在屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的层上,绘图完毕后。系统将会层拷贝在屏幕上,于是完成UIView的显示。
3,换句话说,UIView不具备显示功能,是它内部的层才有显示功能。
二,通过CALyer修改UIView控件的界面属性
1,设置阴影self.image.layer.shadowColor = [UIColorgrayColor].CGColor; //设置阴影颜色 self.image.layer.shadowOffset = CGSizeMake(10, 10); //设置阴影偏移大小 self.image.layer.shadowOpacity = 0.5; //设置阴影的不透明度
2,设置圆角
self.image.layer.cornerRadius = 5; //设置圆角半径 self.image.layer.masksToBounds =YES; //强制内部子类支持圆角效果
3,设置边框
self.image.layer.borderColor = [UIColorredColor].CGColor; //设置边框颜色 self.image.layer.borderWidth = 1; //设置边框宽度
4,设置旋转
//利用transform属性可以设置旋转、缩放等效果 //M_PI_4表示四分之π,顺时针旋转45° //后面的(0, 0, 1)表示Z轴这个向量,修改这个向量可以做一些三维旋转效果,你可以随便改个值试一下,比如(1, 1, 1) //总体的意思是layer会绕着Z轴顺时针旋转45°,也就是在x、y平面进行旋转 self.image.layer.transform = CATransform3DMakeRotation(M_PI_4, 0, 0, 1);
三,添加一个新的层
CALayer *myLayer = [[CALayeralloc] init]; myLayer.bounds = CGRectMake(0, 0, 100, 100);//设置层的高度和宽度 myLayer.position = CGPointMake(100, 100); //设置层的位置 myLayer.backgroundColor = [UIColorredColor].CGColor; //设置层的背景颜色 myLayer.contents = (id)[UIImageimageNamed:@""].CGImage; //设置需要显示的图片 myLayer.cornerRadius = 10; //设置层的圆角半径 myLayer.masksToBounds = YES; //如果设置了图片,需要设置了才有圆角效果 [self.image.layeraddSublayer:myLayer]; //添加层到View的layer中
四,UIView和CALayer的选择
1,CALayer不能处理用户触摸事件,而UIView可以2,如果需要用户进行交互,使用UIView.如果不需要,用UIView和CALayer都可以
3, CALayer的性能会高一些,因为它少了事件处理功能,更加轻量级。
4, UIView可以通过subviews属性访问所有的子视图,CALayer可以通过sublayer属性访问所有子层
五,UIView和CALayer的关系
1, UIView可以通过superview属性访问父视图,CALayer可以通过super layer属性访问父视图2,如果两个UIView是父子关系,那么他们内部的CAlayer也是父子关系
六,CALayer的属性
1,每个UIView内部都关联着一个CALayer,我们称这个Layer为Root Layer(根层).2,对非根层的部分属性进行修改时,默认会自动产生一些动画,如bounds会产生缩放动画;positon会产生平移动画。
3,position可以用来设置CALayer在父层中的位置,它是以父层左上角为坐标原点(0,0);
4,anchorPoint称之为“定位点”,他决定这CALayer身上的那个点会在position属性所指的位置,它的x、y取值范围是0-1,默认(0.5,0.5);
七,自定义CALayer
1,对创建一个CALayer的子类,然后覆盖drawinContext:方法,使用Quartz2D API绘制2,不论采用哪种方式自定义层,都必须调用CALayer的setNeedsDisplay方法才能正常绘图
/** * 类名 myLayer * 绘制一个实心三角形 * @param ctx */ -(void)drawinContext:(CGContextRef)ctx{ CGContextSetRGBFillColor(ctx, 0, 0, 0, 1); //设置为蓝色 CGContextMoveToPoint(ctx, 50, 0); //设置为起点 CGContextAddLines(ctx, 0, 100); //从(50,0)链接到(0,100) CGContextAddLines(ctx, 100, 100); CGContextClosePath(ctx); //合并路径,连接起点和终点 CGContextFillPath(ctx); //绘制路径 } //使用方式 myLayer *layer = [myLayer layer]; layer.bounds = CGRectMake(0, 0, 100, 100); // 设置层的宽高 layer.position = CGPointMake(100, 100); // 设置层的位置 [layer setNeedsDisplay]; // 开始绘制图层 [self.view.layer addSublayer:layer];
相关文章推荐
- Core Animation之简单使用CALayer
- Core Animation基础介绍、简单使用CALayer以及多种动画效果
- Core Animation之简单使用CALayer
- Core Animation之简单使用CALayer
- Core Animation之简单使用CALayer
- Core Animation基础介绍、简单使用CALayer以及多种动画效果
- CALayer 简单的使用
- Core Animation之简单使用CALayer
- Core Animation之简单使用CALayer
- Core Animation之简单使用CALayer
- Core Animation之简单使用CALayer
- Core Animation基础介绍、简单使用CALayer以及多种动画效果
- Core Animation基础介绍、简单使用CALayer以及多种动画效果
- iOS-对CALayer的最简单使用
- Core Animation之简单使用CALayer
- [ios] Core Animation之简单使用CALayer 【转】
- Core Animation基础介绍、简单使用CALayer以及多种动画效果
- CALayer的简单使用
- CALayer的简单使用
- CALayer 的简单使用