CALayer 简介

简介: 概念CALayer 是数据 QuartzCore 框架里面的 、相对于 UIKit 框架 更于底层、 其主要功能是 负责显示视图和动画、CALayer和UIView 在除了能响应事件上 功能 是一致的、 不过因为其 更加底层 所以 CALayer 有一些接口、 UIView 里面没有。

概念

CALayer 是数据 QuartzCore 框架里面的 、相对于 UIKit 框架 更于底层、 其主要功能是 负责显示视图和动画、CALayer和UIView 在除了能响应事件上 功能 是一致的、 不过因为其 更加底层 所以 CALayer 有一些接口、 UIView 里面没有。

动画

有时候我们可以直接通过操作CALayer 去修改视图。但是要注意 隐式动画的发生,CAlayer有对应的 类方法 可以去把隐式动画关闭。

[CATransaction setDisableActions:YES];

我们看到的动画 、实际上在运动的是 CALayer 在动,UIView 并没有参加。

因为CI层操作的是CA层. CGImageRef、CGColorRef两种数据类型是定义在CoreGraphics框架中的.

UIColor、UIImage是定义在UIKit框架中的。

  • 什么是隐式动画?

当对非Root Layer的部分属性进行修改时,默认会自动产生一些动画效果

而这些属性称为Animatable Properties(可动画属性)

在CALayer.h中属性被Animatable修饰的就是会可动画的

Framework

QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOS和Mac OS X上都能使用

但是UIKit只能在iOS中使用

• 为了保证可移植性,QuartzCore不能使用UIImage、UIColor,只能使用CGImageRef、CGColorRef

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

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

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

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

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

因为CALayer 是一种更轻量级别的 视图、所以如果不需要响应点击事件的时候 。可以直接使用其去显示即可以提升性能。

@property 简介


•宽度和高度

@property CGRect bounds;  

•位置(默认指中点,具体由anchorPoint决定)

@property CGPoint position; 

•锚点(x,y的范围都是0-1),决定了position的含义

@property CGPoint anchorPoint; 

•背景颜色(CGColorRef类型)

@property CGColorRef backgroundColor; 

•形变属性

@property CATransform3D transform; 

•边框颜色(CGColorRef类型)

@property CGColorRef borderColor; 

•边框宽度

@property CGFloat borderWidth; 

•圆角半径

@property CGFloat cornerRadius; 

•内容(比如设置为图片CGImageRef)

@property(retain) id contents; 

•阴影颜色

@property CGColorRef shadowColor; 

•阴影不透明(0.0 ~ 1.0) 

@property float shadowOpacity; 

•阴影偏移位置

@property CGSize shadowOffset; 

•@property CGPoint position; 

用来设置CALayer在父层中的位置

以父层的左上角为原点(0, 0)

•@property CGPoint anchorPoint; 

称为“定位点”、“锚点”

决定着CALayer身上的哪个点会在position属性所指的位置

以自己的左上角为原点(0, 0)

它的x、y取值范围都是0~1,默认值为(0.5, 0.5)

参考资料

Apple Layer
Animatable Properties

最后

希望此篇文章对您有所帮助,如有不对的地方,希望大家能留言指出纠正。
谢谢!!!!!
学习的路上,与君共勉!!!

本文原创作者:Jersey. 欢迎转载,请注明出处和本文链接

目录
相关文章
|
存储 算法 索引
RLE格式分割标注文件表示
RLE格式分割标注文件表示
1665 0
|
机器学习/深度学习 文字识别 算法
【OCR学习笔记】2、OCR图像预处理(上)
【OCR学习笔记】2、OCR图像预处理(上)
2627 0
|
移动开发 安全 Android开发
【HarmonyOS 5】鸿蒙mPaaS详解
mPaaS 是 Mobile Platform as a Service 的缩写,即移动开发平台。
649 0
|
JSON Java API
教你如何使用API接口获取数据
随着互联网技术的发展和应用的普及,越来越多的系统和应用提供API接口供其他系统和应用进行数据交互。通过API接口,我们可以获取到各种各样的数据,例如天气预报、股票行情、新闻摘要等等。本文将介绍如何使用API接口获取数据,并附有示例代码。
|
存储 缓存 安全
Java HashMap详解及实现原理
Java HashMap是Java集合框架中常用的Map接口实现,基于哈希表结构,允许null键和值,提供高效的存取操作。它通过哈希函数将键映射到数组索引,并使用链表或红黑树解决哈希冲突。HashMap非线程安全,多线程环境下需注意并发问题,常用解决方案包括ConcurrentHashMap和Collections.synchronizedMap()。此外,合理设置初始化容量和加载因子、重写hashCode()和equals()方法有助于提高性能和避免哈希冲突。
918 17
Java HashMap详解及实现原理
|
监控 安全 网络安全
|
数据采集 机器学习/深度学习 数据挖掘
基于DeepSeek的多模态融合技术:实现图像、视频与音频的协同分析
随着多媒体数据的爆炸式增长,单一模态数据分析已无法满足复杂场景需求。多模态融合技术通过整合图像、视频、音频等多源数据,提供更全面精准的分析结果。DeepSeek作为强大的深度学习框架,在多模态融合领域展现巨大潜力。本文深入探讨基于DeepSeek的多模态融合技术,结合代码示例展示其在图像、视频与音频协同分析中的实际应用,涵盖数据预处理、特征融合、模型训练及评估等环节,并展望未来发展方向。
2265 13
修改了node_modules的文件打包后不生效
修改了node_modules的文件打包后不生效
1913 1
|
算法 编译器 程序员
深入理解C++编译模式:了解Debug和Release的区别
深入理解C++编译模式:了解Debug和Release的区别
2568 3
|
数据可视化
如何使用四分位距方法来识别数据中的异常值?
如何使用四分位距方法来识别数据中的异常值?