本文目录

  • 一、什么是CALayer
  • 二、CALayer的简单使用
回到顶部

一、什么是CALayer

* 在iOS系统中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。

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

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

* 换句话说,UIView本身不具备显示的功能,是它内部的层才有显示功能。

二、CALayer的简单使用

上面已经说过了,UIView之所以能够显示,完全是因为内部的CALayer对象。因此,通过操作这个CALayer对象,可以很方便地调整UIView的一些界面属性,比如:阴影、圆角大小、边框宽度和颜色等。

1.CALayer是被定义在QuartzCore框架中的,因此要想使用CALayer,先导入QuartzCore框架

1> 点击项目名称,然后点击右边TARGETS下面的target

2> 点击Build Pases后,展开Link Binary....,添加 + 号

3> 在搜索框中输入"Quartz",选中QuartzCore.framework,最后add添加

4> 添加完毕后,这个框架就会出现在项目文件夹中

如果你觉得位置不好看,还可以将它拖到Frameworks文件夹下,跟其他框架放一起

2.在项目代码中导入QuartzCore框架的主头文件

#import <QuartzCore/QuartzCore.h>

3.通过CALayer修改UIImageView的界面属性

你也可以使用UIButton或者UILabel,这里就以UIImageView为例子

1> 先创建一个UIImageView,添加到控制器的view中

1 UIImage *image = [UIImage imageNamed:@"lufy.png"];
2 UIImageView *imageView = [[[UIImageView alloc] initWithImage:image] autorelease];
3 imageView.center = CGPointMake(100, 100);
4 [self.view addSubview:imageView];

2> 设置阴影

1 imageView.layer.shadowColor = [UIColor grayColor].CGColor;
2 imageView.layer.shadowOffset = CGSizeMake(10, 10);
3 imageView.layer.shadowOpacity = 0.5; 

* 第1行设置阴影的颜色为灰色,注意,这里使用的是UIColor的CGColor属性,是一种CGColorRef类型的数据

* 第2行设置阴影的偏移大小,可以看出阴影往原图的右下角偏移

* 第3行设置阴影的不透明度为0.5,表示半透明。如果为1,代表完全不透明。

3> 设置圆角大小

通过layer属性可以访问视图内部的CALayer对象

1 imageView.layer.cornerRadius = 10;
2 imageView.layer.masksToBounds = YES;

* 第1行设置圆角半径为10

* 第2行的maskToBounds=YES:可以看做是强制内部的所有子层支持圆角效果,少了这个设置,UIImageView是不会有圆角效果的

* 注意,如果设置了maskToBounds=YES,那将不会有阴影效果

4> 设置边框宽度和颜色

1 imageView.layer.borderWidth = 5;
2 imageView.layer.borderColor = [UIColor redColor].CGColor;

* 第1行设置边框宽度为5

* 第2行设置边框颜色为红色

5> 设置旋转

imageView.layer.transform = CATransform3DMakeRotation(M_PI_4, 0, 0, 1);

* 利用transform属性可以设置旋转、缩放等效果

* M_PI_4表示四分之π,顺时针旋转45°

* 后面的(0, 0, 1)表示Z轴这个向量,修改这个向量可以做一些三维旋转效果,你可以随便改个值试一下,比如(1, 1, 1)

* 总体的意思是layer会绕着Z轴顺时针旋转45°,也就是在x、y平面进行旋转

转载于:https://www.cnblogs.com/ccmy/p/4587738.html

CALayer 详解 -----转自李明杰相关推荐

  1. CALayer 4 详解 -----转自李明杰

    CALayer4-自定义层 本文目录 一.自定义层的方法1 二.自定义层的方法2 三.其他 自定义层,其实就是在层上绘图,一共有2种方法,下面详细介绍一下. 回到顶部 一.自定义层的方法1 方法描述: ...

  2. CALayer 3 详解 -----转自李明杰

    CALayer3-层的属性 本文目录 一.隐式动画属性 二.position和anchorPoint 回到顶部 一.隐式动画属性 * 在前面几讲中已经提到,每一个UIView内部都默认关联着一个CAL ...

  3. CALayer 2 详解 -----转自李明杰

    CALayer2-创建新的层 本文目录 一.添加一个简单的图层 二.添加一个显示图片的图层 三.为什么CALayer中使用CGColorRef和CGImageRef这2种数据类型,而不用UIColor ...

  4. 【好程序员笔记分享】——UIView与CALayer详解

    -iOS培训,iOS学习-------型技术博客.期待与您交流!------------ UIView与CALayer详解 研究Core Animation已经有段时间了,关于Core Animati ...

  5. LLVM框架/LLVM编译流程/Clang前端/LLVM IR/LLVM应用与实践-李明杰-专题视频课程

    LLVM框架/LLVM编译流程/Clang前端/LLVM IR/LLVM应用与实践-3人已学习 课程介绍         LLVM并非仅仅是一款编译器这么简单.利用LLVM,我们可以进行各种疯狂的操作 ...

  6. ios大牛李明杰亲授《从入门到精通Swift编程》限时优惠活动推出!已近600人报名直播课!

    课程简介: Swift,是Apple公司于2014年6月发布的全新编程语言,是第一个既满足工业标准又像脚本语言一样充满表现力和趣味的编程语言.从Swift面世那一刻起,就受到了全世界各地开发者的热捧和 ...

  7. iOS底层原理班(下)/OC对象/关联对象/多线程/内存管理/性能优化-李明杰-专题视频课程...

    iOS底层原理班(下)/OC对象/关联对象/多线程/内存管理/性能优化-236人已学习 课程介绍         得遇名师,突飞猛进!iOS培训王者MJ(李明杰)老师精心研发,iOS进阶课程,实用技术 ...

  8. 各种背包详解(自己总结) 金明的预算和LOL(可依赖的背包问题)

    在讲可依赖背包之前先回顾下背包九讲的内容,现在做dp多了发现背包问题真的是dp的鼻祖,好多种问题都是基于背包的模型发展而来,就是不是基于背包的,把背包搞懂也有利于你自己学习dp,以此来想到其它状态转移 ...

  9. node.js Promise详解(尚硅谷李立超老师视频笔记)

    • Promise就是一个用来存储数据对象,但是由于Promise存取的方式的特殊,所以可以直接将异步调用的结果存储到Promise中 Promise存储异步数据: function sum(a,b) ...

最新文章

  1. Cisco交换机密码恢复
  2. commix 命令注入获取信息 (好东西)
  3. mysql将字符串转成数字
  4. 11G新特性 -- Expression Statistics
  5. 实现echarts中国地图迁徙图
  6. 华为服务器忘记系统密码忘了,服务器忘记密码重置
  7. 时艳强对话王团长:EOS如果失去社群共识,也就没什么价值了
  8. Stone Ocean(https://acs.jxnu.edu.cn/problem/GYM103495E)
  9. pythonexcel操作总结_python中常见关于Excel表格读写操作
  10. C++常见排序算法——选择排序算法
  11. 为什么需要选择服务器托管?
  12. Windows XP 系统自带扑克牌资源动态链接库cards.dll逆向分析笔记
  13. ola2672978400 oj最短路径
  14. Android端搭建web服务器
  15. 关于QUERY_ALL_PACKAGES权限导致Google下架apk
  16. windows10系统的域服务器版本,windows10域服务器
  17. 直角转弯与外轮差内轮差
  18. opencv3.0中的无缝克隆图像——seamless_cloning(Poisson Image Editing)
  19. 天刀服务器的位置2018,江湖前沿 2018天刀版本爆料分析
  20. Python+BeautifulSoup抓取暴走漫画页面图片

热门文章

  1. androidstudio加载矢量图
  2. win7使用VMware安装win7虚拟机上网设置
  3. WRAP验厂辅导,WRAP验厂时会涉及到哪些法律法规
  4. 【遇坑记实 二】小坑合集
  5. Lua sublime Text 2 - 性感无比的代码编辑器!程序员必备神器!跨平台支持Win/Mac/Linux
  6. 跨境电商卖家如何引流独立站?
  7. greenplum 递归函数
  8. 个人管理经典:德鲁克的七次经历
  9. CentOS7安装autojump
  10. 开课吧Java:市面上常用的微服务框架有哪些?