本文目录

  • 一、什么是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平面进行旋转

iOS核心动画之CALayer(1)相关推荐

  1. iOS核心动画学习整理

    最近利用业余时间终于把iOS核心动画高级技巧(https://zsisme.gitbooks.io/ios-/content/chapter1/the-layer-tree.html)看完,对应其中一 ...

  2. iOS 核心动画 Core Animation浅谈

    代码地址如下: http://www.demodashi.com/demo/11603.html 前记 关于实现一个iOS动画,如果简单的,我们可以直接调用UIView的代码块来实现,虽然使用UIVi ...

  3. iOS核心动画详解swift版----基础动画

    2019独角兽企业重金招聘Python工程师标准>>> iOS核心动画详解swift版---基础动画 创建工程,添加2个ViewController,通过rootViewContro ...

  4. iOS核心动画之CoreAnimation

    本文目录 一.Core Animation简介 二.Core Animation的使用步骤 三.CAAnimation 四.CAPropertyAnimation 回到顶部 一.Core Animat ...

  5. iOS核心动画Core Animation(一)

    核心动画Core Animation(一) 一.简述 Core Animation是直接作用在CALayer上的(并非UIView上)非常强大的跨Mac OS X和iOS平台的动画处理API,Core ...

  6. iOS核心动画以及UIView动画的介绍

    我们看到很多App带有绚丽狂拽的特效,别出心裁的控件设计,很大程度上提高了用户体验,在增加了实用性的同时,也赋予了app无限的生命力.这些华丽的效果很多都是基于iOS的核心动画原理实现的,本文介绍一些 ...

  7. iOS开发系列--让你的应用“动”起来--超详细的ios核心动画介绍

    概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌.在这里你可以看到iOS中如何使用图层精简非交互式绘图,如何通过核心动画创建基础动画.关键帧动画 ...

  8. iOS核心动画 - CALayer

    大家知道,在iOS中所有的视图都继承自UIView. UIView处理所有的触摸事件和画图. 事实上,UIView所有的渲染和动画是托管给另一个类来负责的,它就是CALayer. 但是,需要记住的是, ...

  9. iOS核心动画CALayer和UIView

    UIView和CALayer的关系. 每一个UIview都有一个CALayer实例的图层属性,也就是所谓的backing layer. 实际上这些背后关联的图层才是真正用来在屏幕上显示和做动画,UIV ...

最新文章

  1. 龙尚科技的生态秘诀:品质赢得信誉 互惠促成长久合作
  2. Linux系统使用apt命令安装java
  3. java filter函数的用法_5分钟掌握Python | Map、Reduce和Filter如何运用?
  4. 打开excel文件并写入_双击Excel表格文件时只打开程序不能直接打开文件
  5. mysql-5.5.8_MySQL5.5.8安装
  6. 46什么是session
  7. 栅格矢量化_学会用栅格系统,普通LOGO秒变高大上
  8. Palo Alto Networks下一代安全平台五大创新功能:云安全为重中之重
  9. Bootstraphead里的内容
  10. x光肺部分割数据集_一个超小型分割检测数据集
  11. 交换机/路由器实验:保姆级别的iperf安装和使用教程
  12. 阿里云认证未来网络学院ACE公开课——30分钟掌握ACE考试通关攻略
  13. 阿里云国际香港服务器,入手到底行不行?
  14. mysql字符集与校对规则设置_mysql 字符集和校对规则
  15. Cocos2d+protobuf仿JJ斗地主源码,win32和Android编译通过
  16. 教师节快乐:带大家回顾这十位大师笔下的教师!
  17. 车到山前必有路,可惜丰田刹不住! 丰田就是刹的住,吓得车主尿一裤!
  18. 数据结构与计算机网络,如何把计算机原理,操作系统,数据结构和计算机网络结合起来...
  19. Linux Platform平台设备驱动模型
  20. 小白聊智慧制造之六:智慧制造是中国在未来制造业占据竞争优势地位的关键

热门文章

  1. vector的去重操作
  2. c语言每个整数占9列,c语言 第五章 数据类型和表达式.ppt
  3. 打印图形(2)(直角三角形)(C+Java)
  4. qt如何提前jpg文件里的缩略图_如何去捕获和编辑H5制作软件Hype中的海报图像
  5. linux 命令tar,Linux下tar命令详解
  6. php 过滤微信符号昵称,PHP方法处理微信昵称特殊符号过滤
  7. 原生js绑定click为什么点一次执行两次_前端小知识10点(2020.10.8)
  8. ElasticSearch入门 —— 集群搭建
  9. 数据挖掘常用的方法(分类,回归、聚类、关联规则)
  10. leetcode刷题 162.寻找峰值