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. 欢迎转载,请注明出处和本文链接

目录
相关文章
|
Linux 开发者
交叉编译工具链的下载与安装
交叉编译工具链的下载与安装
3287 1
修改了node_modules的文件打包后不生效
修改了node_modules的文件打包后不生效
1843 1
|
Java Maven Android开发
安卓项目使用阿里云镜像加速构建过程
安卓项目使用阿里云镜像加速构建过程
4022 0
|
JavaScript 前端开发 小程序
js两个日期比较相差多少天实例
js两个日期比较相差多少天实例
453 0
|
JavaScript
Vue 获取当前日期(时间,格式为YYYY-MM-DD HH:mm:ss)
Vue 获取当前日期(时间,格式为YYYY-MM-DD HH:mm:ss)
1742 0
|
JavaScript
vue中props中值未监听
vue中props中值未监听
145 0
|
2天前
|
人工智能 自然语言处理 JavaScript
2026年Windows+Ollama本地部署OpenClaw保姆级教程:本地AI Agent+阿里云上快速搭建
2026年OpenClaw凭借本地部署、私有化运行的特性,成为打造个人智能体的核心工具,而Ollama作为轻量级本地大模型管理工具,能让OpenClaw摆脱对云端大模型的依赖,实现**本地推理、数据不泄露、全流程私有化**的智能体验。本文基于Windows 11系统,从硬件环境准备、Ollama安装与模型定制、OpenClaw部署配置、技能扩展到常见问题排查,打造保姆级本地部署教程,同时补充阿里云OpenClaw(Clawdbot)快速部署步骤,兼顾本地私有化需求与云端7×24小时运行需求,文中所有代码命令均可直接复制执行,确保零基础用户也能快速搭建属于自己的本地智能体。
4168 18
|
9天前
|
存储 人工智能 负载均衡
阿里云OpenClaw多Agent实战宝典:从极速部署到AI团队搭建,一个人=一支高效军团
在AI自动化时代,单一Agent的“全能模式”早已无法满足复杂任务需求——记忆臃肿导致响应迟缓、上下文污染引发逻辑冲突、无关信息加载造成Token浪费,这些痛点让OpenClaw的潜力大打折扣。而多Agent架构的出现,彻底改变了这一现状:通过“单Gateway+多分身”模式,让一个Bot在不同场景下切换独立“大脑”,如同组建一支分工明确的AI团队,实现创意、写作、编码、数据分析等任务的高效协同。
3571 27
|
13天前
|
人工智能 自然语言处理 监控
OpenClaw skills重构量化交易逻辑:部署+AI全自动炒股指南(2026终极版)
2026年,AI Agent领域最震撼的突破来自OpenClaw(原Clawdbot)——这个能自主规划、执行任务的智能体,用50美元启动资金创造了48小时滚雪球至2980美元的奇迹,收益率高达5860%。其核心逻辑堪称教科书级:每10分钟扫描Polymarket近千个预测市场,借助Claude API深度推理,交叉验证NOAA天气数据、体育伤病报告、加密货币链上情绪等多维度信息,捕捉8%以上的定价偏差,再通过凯利准则将单仓位严格控制在总资金6%以内,实现低风险高频套利。
7173 62

热门文章

最新文章