CALayer引发的思考

VLOOKUP_fixed.py 立即下载


端午节快乐、(快乐你妹、哪都没去)




说到CALyer,我在之前了解的还真不多,

经常使用的也就是 控件.layer.maskToBounds 控件.layer.cornerRadius 这些。


我们对UIView是非常熟悉的,下面我们首先来讨论它和CALayer的联系与区别:

每一个UIView内部都默认关联着一个CALayer,我们可以称这个Layer为Root Layer(根层),

我们经常用到的view.frame其实就是简单的返回了view.layer.frame。


关于区别我只想说一点:
.首先UIView可以响应事件,CALayer不可以:

UIKit使用UIResponder作为响应对象,来响应系统传递过来的事件并进行处理。UIApplication、UIViewController、UIView、和所有从UIView派生出来的UIKit类(包括UIWindow)都直接或间接地继承自UIResponder类。

在 UIResponder中定义了处理各种事件和事件传递的接口, 而 CALayer直接继承 NSObject,并没有相应的处理事件的接口。


你说这些有的没的干啥玩意呀(最近爱上了papi酱)

我是在做学习做动画的时候才感觉到的CALyer 的存在感,

每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)

所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画


那么什么是隐式动画?

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

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

列举几个常见的Animatable Properties:

bounds:用于设置CALayer的宽度和高度。修改这个属性会产生缩放动画

backgroundColor:用于设置CALayer的背景色。修改这个属性会产生背景色的渐变动画

position:用于设置CALayer的位置。修改这个属性会产生平移动画

可以查看头文件,看有没有Animatable,如果有则表示支持。


CALyer可以做出像进度条这样的动画效果

CAShapeLayer可以用来做边缘的动画效果,它实现不了填充效果,它和贝塞尔曲线接合使用效果很好

 CAGradientLayer可以方便的处理颜色渐变

CAEmitterLayer做出的粒子动画效果非常棒





不

要

往

下

翻

了





没

有

代

码

!


!


!


。


。


。

都

说

了

没

有















       


D打卡签到,蓝牙中继,广播信号模拟器 模拟WIFI或蓝牙,有如下4种运行模式 1、WIFI模式:指定SSID、BSSID名称等,模拟WIFI,供设备连接。 2、蓝牙静态模式:指定MAC地址,广播固定的RAW数据。 3、蓝牙动态主机模式:扫描周围蓝牙设备,获取指定MAC地址的蓝牙及其RAW数据,实时发送至Cloud云端,可以设定时间段,只在设定的时间段内发送。 4、蓝牙动态从机模式:指定MAC地址,从Cloud云端获取动态主机模式实时上传的该MAC地址的RAW数据,并广播RAW数据。 准备工作: 1、板子:选择ESP32C3或ESP32C3 Supermini 2、nRF Connect手机app:用于扫描获取待模拟蓝牙设备的MAC和RAW数据。 Wifi分析仪或WiFi魔盒手机APP:用于扫描获取待模拟WIFI设备的SSID和BSSID。 3、可使用官方flash_download_tool_3.9.11工具来固件烧录。 使用说明: 上述完成后,设备首次上电,RESET一侧的指示灯会常亮,可以把它理解成电源指示灯; BOOT一侧的灯会亮,该灯常亮,表示设备开启了AP模式,此时设备会发射一个WIFI信号源,名称为ESPWIFI_AP,密码为12345678,手机或电脑连接该WIFI,浏览器输入192.168.4.1,进入设备的配置页面,进行相应的配置,其中动态主机模式和动态从机模式的SSID、Pwd 及要模拟的蓝牙MAC地址。配置完成并保存后,会重启,重启后设备会按照保存的配置运行。若下次要修改设备配置,可以长按BOOT按键,等待BOOT一侧的灯常亮,即进入AP模式,再按照上述流程配置即可。 仅用于蓝牙设备的开发与调试,请勿用于签到等违法违纪用途。 立即下载

相关推荐

YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

Windows Phone 7的五大胜出逻辑:被低估的体验范式

移动操作系统的核心价值,从来不只是功能堆砌,而是如何通过系统级设计约束,将性能、动效、状态管理与信息架构统一为可信赖的用户体验。Windows Phone 7以Metro动效语言、挂起即冻结生命周期、Live Tile主动信息端口、Silverlight声明式UI栈及生态准入治理,构建了一套‘克制即能力’的技术范式。它用60fps硬保底动效映射系统状态,以Dormant态实现零后台熵增,借Secondary Tile实现用户主权的信息分层,靠编译期强制校验保障全生态稳定性——这些并非过时遗产,而是现代Flu

diaozhiwa5526的博客 394

企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化

企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。

iOS库的介绍以及如何使用CocoaPods管理库(2016最新版本)

我们首先从操作系统的角度来讨论一下:如何将一个用户源程序变为一个可在内存中执行的程序? 这是一门令人蛋疼的课,幸好还有点卵用、 回答我们提出的问题: 1、 《编译》 作用:将用户源代码编译成若干个目标模块。 2、《链接》 作用:将目标模块和它们所需要的库函数链接起来,形成一个完整的装入模块。 3、《装入》 作用:将装入模块装入内存。 我们这里主要说一

IOSAFei的专栏 6350

Java低代码, 轻量级, 支持国产化 国密 AI大模型MCP服务 商业免费 包括核心模块如:组织机构、角色用户、权限授权、数据权限、内容管理、工作流、Spring Cloud 微服务、AI大模型等

Java低代码, 轻量级, 支持国产化 国密 AI大模型MCP服务 商业免费 Spring Boot, MyBatis, Flowable, TypeScript, Vue, Antdv, 包括核心模块如:组织机构、角色用户、权限授权、数据权限、内容管理、工作流、Spring Cloud 微服务、AI大模型、代码生成器等

基于动态窗口法DWA的机器人路径规划研究(Matlab代码实现)

内容概要:本文系统研究了基于动态窗口法(DWA)的机器人局部路径规划算法,深入剖析其在动态环境中实现自主避障与实时轨迹优化的核心机制。文章详细阐述了DWA算法的速度空间采样策略、轨迹预测模型、动力学约束处理及多目标代价函数的设计原理,并通过构建完整的Matlab仿真框架验证算法有效性。结合典型场景的仿真实验,展示了机器人在复杂障碍物环境下如何实时生成安全、平滑且符合运动学约束的最优路径,充分体现了DWA在移动机器人导航中的实用性与鲁棒性。; 适合人群:具备机器人运动规划基础知识和Matlab编程能力,从事智能移动机器人、自动驾驶或服务机器人研发的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解DWA算法的理论基础与实现细节;②掌握机器人局部路径规划的仿真实现方法;③为实际机器人系统的导航模块开发提供可复用的算法原型与代码参考;④作为进一步研究高级导航算法(如TEB、MPC)的技术基础。; 阅读建议:建议结合提供的Matlab代码逐模块分析与调试,重点关注速度采样、轨迹积分、障碍物距离计算及代价评估等关键环节,通过调整参数在不同地图环境中进行对比实验,以深刻把握算法性能与参数之间的关系,进而提升对实时路径规划系统设计的理解与应用能力。

Git的基本了解与使用、向github提交代码

git:是一个版本控制系统。 github:一个代码托管提供商、开源网站、是一个面向开源及私有软件项目的托管平台,因为支持Git作为唯一的版本库格式进行托管,故名为github。 刚开始我对两者的关系很困惑、其实就是你可以在github上面创建一个项目,然后将github提供的git克隆到本地,然后再提交给github。 这是向github上面提交项目的步骤:

IOSAFei的专栏 1292

【轴承故障诊断】用于轴承故障诊断的集中时频分析研究(Matlab代码实现)

内容概要:本文系统研究了用于轴承故障诊断的集中时频分析技术,重点解决了传统时频分析方法在处理非平稳信号时存在的能量分散与分辨率不足等问题。通过引入集中时频分析方法,能够有效聚焦信号能量,精确提取轴承故障特征频率,提升故障识别的准确性与时效性。文章详细阐述了该方法的理论基础,并结合仿真信号与实际实验数据验证其优越性能,同时提供了完整的Matlab代码实现流程,涵盖信号预处理、时频变换、参数优化及结果可视化等环节,便于读者复现与拓展应用。; 适合人群:具备一定信号处理理论基础和Matlab编程能力的研究生、科研人员,以及从事机械设备状态监测、故障诊断与预测性维护工作的工程技术人员。; 使用场景及目标:①应用于电机、风机、齿轮箱等旋转机械的早期轴承故障检测,实现故障预警;②提升工业设备运维系统的智能化水平,支撑预测性维护体系构建;③作为高校或研究机构在信号处理、机械故障诊断等课程中的教学案例与实践素材。; 阅读建议:建议读者结合文中提供的Matlab代码逐段运行与调试,深入理解集中时频分布的生成机制及其关键参数(如核函数选择、平滑窗口大小)对诊断效果的影响,并尝试将其应用于其他类型的机械故障信号分析中,开展对比研究以深化对该方法适用性的认识。

MVC、MVVM、RaectiveCocoa的总结

本文所有Demo地址:https://github.com/iOSaFei/MVC-MVVM-ReactiveCocoa-真的理解MVC吗?从刚开始做iOS项目的时候,就知道要使用MVC,虽然不懂为什么但总是会建三个文件夹。写的东西多了见的东西多了才发现还欠MVC一次总结。为了有权威性先摆上斯坦福大学公开课上的一幅图:这幅图需要注意以下几点: Model:数据模型,负责数据的获取及存放,数据的获取

IOSAFei的专栏 982

管道机器人手臂机械结构设计cad【8张】+三维图+设计说明书+绛重

履带式管道机器人适用于各种管道环境,包括直管道、弯曲管道、水平管道、垂直管道等,其灵活性和适应性使得它可以应对不同形状和尺寸的管道,完成全面的检测和维护工作。管道机器人研究具有重要的现实意义和深远的社会影响,通过提高工作效率、降低人员风险、提升服务质量、节约成本资源和促进科技创新等方面的作用,为现代工程技术领域的发展和进步做出了积极的贡献。管道机器人是一种能够在管道内部执行各种任务的智能机器人,而管道机器人的机械臂对于管道机器人在管道内执行任务的灵活性、稳定性和效率至关重要。

kejigongjiang的博客 943

从SAS接口到InfiniBand:一张图看懂数据中心硬件‘黑话’(SFF-8643/8644、QSFP112、NDR/HDR/EDR)

本文深入解析数据中心硬件术语,从SAS接口标准(SFF-8643/8644)到速率标识(NDR/HDR/EDR),帮助工程师快速理解关键性能指标。特别对比了PCIe卡规格(HHHL/FHHL)和光模块选择(QSFP112/OSFP),并探讨InfiniBand在高性能网络中的优势,为硬件选型提供实用指南。

weixin_32103009的博客 427

Objective-C集合遍历的几种方式

集合遍历的几种方式 简单for循环 NSEnumerator枚举遍历 for in快速遍历 基于块的遍历

IOSAFei的专栏 959

攀藤PMS系列传感器STM32驱动开发与数据解析实战

本文详细介绍了攀藤PMS系列传感器与STM32微控制器的驱动开发与数据解析实战,涵盖硬件连接、数据协议解析、驱动源码编写及数据处理优化。重点解析了传感器数据帧结构,提供了完整的STM32驱动实现代码,并分享了实际应用中的问题排查与性能优化经验,帮助开发者快速实现高精度颗粒物浓度检测。

milk8的博客 347

ReactiveCocoa+MVVM实践篇

实现一个完整的登陆界面本文Demo地址:https://github.com/iOSaFei/ReactiveCocoa-MVVM- 效果如下: 看到QQ现在的登陆界面自己也想抄袭一下,背景用几张图片合成了一个Gif动画,但是清晰度不够,QQ的背景视频应该是视频合成的Gif。我的这个效果不是那么的好。一、项目目的:1、练习使用MVVM+RAC写项目; 2、重构自己之前的代码;二、项目技术:

IOSAFei的专栏 840

万象RK3506-EG1800网关使用说明

摘要:HD-RK3506-EG1800是一款高性能工业物联网边缘计算网关,支持Buildroot和Ubuntu双系统。文档详细介绍了网关的网络配置(包括ETH0/ETH1的静态IP设置、WiFi连接)、时钟同步、HSL软件安装配置(含开机自启动服务)、系统日志优化以及刷机操作指南(Loader/Maskrom模式)。特别提供了基于lighttpd的网页管理方案,通过HTML界面实现网络参数可视化配置,包含身份验证、实时状态显示和表单提交功能。网关默认ETH0固定IP为192.168.1.10,提供完整的CL

tian_jiangnan的博客 174

ubuntu打实时内核补丁教程以及安装后显卡驱动问题解决方法

在ubuntu20.04上安装成功,亲测有效 目录ubuntu打实时内核补丁教程1、下载实时内核2、解压和打补丁(patch)3、安装依赖和编译安装4、修改一些文件,便于之后切换内核5、重启电脑实时内核版本下安装nvidia显卡驱动的问题1、先切换回之前的内核(非实时)版本2、重装之前内核(非实时)版本下的显卡驱动3、切换回实时内核(按照上面的步骤)4、在实时内核下安装显卡驱动 ubuntu打实时内核补丁教程 安装目标系统:ubuntu20.04 电脑配置:i9,2080ti 1、下载实时内核 打开终端,输

weixin_39275295的博客 7995

Swift语言

在2014年的苹果WWDC大会上,苹果推出了一款新的编程语言——Swift。而且火的不一般,就在Swift语言刚推出不到一个月的时间里,已经排到了编程语言的第十几位,这在以前从未发生过。 Swift是一门博采众长的现代语言,在设计的过程中,Swift的缔造者Chirs参考了Objective-c,Rust,Haskell,Ruby,Python,c#等优秀语言的特点,最终形成了Swift的语法特性:

IOSAFei的专栏 838

Loki 分布式日志中心服务

分布式日志中心 Loki + Promtail + Grafana

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 2353

熟悉导航面板

工欲善其事,必先利其器 下面这张图片或许是一个ios移动应用开发者将要面对一生的工具

IOSAFei的专栏 772

CDD那些事 - DID and SecurityAccess

本文介绍了SecurityAccessSID27的安全访问配置流程:1.通过StateGroups添加Level2群组;2.在Classes定义L2子功能;3.配置4步解锁流程,选择对应解锁等级;4.在DiagnosticInstance设置请求响应。同时说明了DID配置的两种方式:在DIDs页面定义或通过Identification页面创建,前者定义更全面。文章还提到ServiceList支持view/edit模式,其中edit模式可配置DID的多服务支持(如同时支持SID22读取和SID2E写入),但该

ziteng21的博客 255

基于投影法实现扫描文件的光学字符分割——Matlab实现

投影法是指将原图像沿着某个特定的方向进行投影,得到投影线上的像素点的个数或像素值总和,从而可以得到该方向上物体的轮廓信息。对于字符分割,我们可以将图像进行水平和垂直两个方向的投影,从而得到字符之间的分割线。在OCR技术中,字符分割是非常重要的一步骤,因为字符之间的分割对字符识别的准确性有很大的影响。通过对投影值的判断,可以求出字符之间的分割线,这里我们根据垂直方向上的投影值进行判断,选取一个阈值进行筛选即可。使用sum()函数分别计算出水平和垂直方向上的投影值,得到每一行和每一列的投影值。

TechGlide的博客 581

CoreImage的简单使用

现在这个社会,美图秀秀、潮自拍特别受欢迎! 那些神奇的滤镜是怎么实现的呢? 今天教你打码!!! 先来看下效果: 某些地方是不能让人YY的! 首先来介绍一下CoreImage: 1.coreImage的介绍         coreImage是IOS5中新加入的一个Objective-c的框架,提供了强大高效的图像处理功能,用来对基于像素的图像进行操作与分析。i

IOSAFei的专栏 647

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C++的异常处理 & Objc的异常处理

C++异常用try、throw、catch三个关键字处理,基本的思路就是用try来捕捉异常、用throw抛出异常、用catch捕获异常并处理。 基本格式如下: try {         if (subscript < 0 || subscript > 9) {             throw subscript;         } else {

IOSAFei的专栏 619

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

alloc、init引发的思考

oc初始化一个对象使用两段式: MyClass *myObj = [MyClass alloc]; myObj = [myObj init]; 为了简洁,我们都是这样写: MyClass* myObj = [MyClass alloc] init]; 我们思考一下两段式分别z alloc allocat

IOSAFei的专栏 595

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

UINavigationController基础篇

关于UINavigationController,是很让人蛋疼的一个控制器,且不说进阶、单单是那些Item、Item颜色的设置就让人混淆。 先上图: 我们重点看NavigationBar 下面开始上干货: 1、如何修改返回键的颜色?     self.navigationController.navigationBar.tintColor = [UIColor

IOSAFei的专栏 580
上一篇: C++的异常处理 & Objc的异常处理
下一篇: alloc、init引发的思考
iOS_aFei
博客等级 码龄12年 15粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值