【CALayer-CALayer的基本属性 Objective-C语言】

news2024/10/7 4:27:59

一、接下来,我们来说这个Layer啊,

通知

1.首先,Layer能接触到的,就是我们之前说截图啊,就是我们self.view里面,有一个layer属性,

[self.view.layer renderInContext:(CGContextRef t)];

那个里面,有一个layer属性,然后呢,是CALayer类型的,

接下来,我们就来学习一下这个layer,

通知

那么,首先啊,CALayer,这一块儿,

通知

1)好,在iOS当中,你能够看得见摸得着的东西,基本上都是UIView,比如说,按钮啊、Label啊、textField啊、图标啊、imageView,这些东西,都是UIView,

UIView,之所以能够显示在屏幕上,之所以你能够看的到它,之所以有颜色,是因为它内部有一个图层,它内部有一个图层,

2)然后呢,在你创建某一个UIView对象的时候,也就是,UIView alloc-init的时候,UIView的内部,系统给我们做的事情,UIView的内部,它会自动的创建一个图层,这个图层呢,就是我们“点儿”出来的那个CALayer,“点儿”出来的那个layer对象,就是那个CALayer对象,

3)通过UIView的layer属性,可以访问到这个图层,这是一点啊,

4)UIView,需要显示到屏幕上的时候,会去调用drawRect:方法,进行绘图,并且,将所有的内容,绘制到自己的图层上,绘图完毕以后,系统会将图层拷贝到屏幕上,最后完成了UIView的显示,

5)换句话说,UIView,本身是不具备显示功能的,之所以能够显示,是因为它内部有一个图层,才能够显示,

2.也就是说,你在模拟器上看到的一些东西,比如说这个,

通知

这些东西,你看到的一个红色的、黄色的、实际上,这个View啊,实际上,并不是它View,在显示,而是View里面的图层,layer,在显示,

先记住啊,UIView本身是没有显示功能的,你之所以能看到它,是因为它里面的layer在起作用,

3.CALayer的基本使用

通知

这个layer啊,layer里面呢,会有一些个属性,一会儿我们会去做一下代码啊,

把这些属性啊,给大家去展示一下,

通知

4.然后呢,外面这一块儿啊,掌握这一块儿啊,也写了,CALayer、和、UIView之间的关系,

我们说,layer对象,是UIView里面的一个属性啊,然后呢,

1)CALayer啊,是负责内容的显示的,是显示内容和动画的,这是CALayer干的事情,

2)UIView呢,仅仅是负责监听、和、响应事件,

也就是说,我给一个imageView,添加了一个轻敲的手势,我一点它,它能够输出一个方法,那是UIView在去负责监听、在去负责响应这个事件,

你能够看得到imageView上面,有一张图片,是因为它里面有一个layer,是因为它里面有一个layer啊,然后呢,这个时候,可能有同学会问,那既然UIView,不能够设置显示功能,UIView是没有具备显示功能的话,为什么我们还能够去设置UIView的backgroundColor、等等一些东西,

我们UIView,能够设置backgroundColor,仅仅是因为系统为我们方便,给我们抛出来了这个属性,实际上,你给UIView设置backgroundColor,它的底层,是给你的layer,去设置一个backgroundColor,

系统只是为了我们方便,给我们提供了一个属性,然后呢,你在UIView里面,看起来能够设置颜色,实际上,是给它的底层,实际上,是给它的layer,去设置背景色,

再来说一下这个UIView、和、CALayer的问题,

通知

1)一个UIView跟这个CALayer啊,我们能够看得见UIView,是因为你看到了它的颜色,都是CALayer,并不是UIView,只要你显示出来的东西,都是CALayer,UIView,仅仅是负责监听和处理事件的,这一点,面试可能会问,问什么,问“UIView跟CALayer的关系”:

一个是用来显示,

一个是用来负责监听、和、响应事件,

你就这么答,没错儿,

2)还有一点,我们之前说,UIView里面,drawRect:里面,获取到的上下文,是什么类型的,我们说,图片类型的上下文,获取到的是bitmap类型的,对,实际上,我们说,drawRect:里面,获取到的上下文,我们说,在UIView里面,写的东西,从哪儿蹦出来一个layer,实际上,这个layer啊,就是我们说,UIView里面显示的图层,所以说,我们这个获取上下文的时候,我们说,获取到的这个上下文,的类型,是layer类型的,因为你实际上,是画到了它这个UIView的layer上了,所以,我们管它叫做layer类型的上下文,这么来的啊,

好,然后呢,这个是关于CALayer的一个简单的介绍啊,

二、接下来,我们就来说这个CALayer的属性,

通知

1.好,首先呢,CALayer,我们说,是负责一个UIView显示的,那么,它的属性呢,实际上,会比你的UIView要强大很多,为什么这么说,

我们说,UIView,你之所以能看的着,是因为它有一个layer,那虽然我们能够通过backgroundColor,能够去设置一个UIView的背景颜色,是因为底层,你给layer,去设置了背景颜色,还有一些属性,系统没有抛出来,好,比如说,

1)阴影:shadow

2)圆角:radius

3)边框宽度和颜色:border

通知

这些东西,你在UIView里面,是“点儿”不出来的,

你“点儿”出来的,可能就是一个backgroundColor,那实际上,它还是给layer去设置的,

layer,实际上,属性,会比UIView,要强大很多,因为layer本身,就是专门负责显示的,

2.好,然后呢,接下来,我们就来设置一下layer的这些属性,

通知

我们新建一份代码啊,

通知

Name:02-CALayer基本属性

通知

好,然后呢,在这个里边儿,我先来写一段儿代码,

通知

就是搞一个UIView,搞到屏幕上面去啊,

UIView *redView = [[UIView alloc] init];

通知

redView.frame = CGRectMake(100,100,100,100);

通知

redView.backgroundColor = [UIColor redColor];

通知

[self.view addSubview:redView];

通知

这段儿代码,没问题吧,command + R,

通知

好,这是我们这个UIView,就搞定了,

</

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1710892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

union all 以及标量子查询执行计划

SELECT 1, (SELECT ID1 FROM TE WHERE IDA.ID2) FROM .TA A WHERE COLA X UNION ALL SELECT 1, (SELECT ID2 FROM TD WHERE IDA.ID1) FROM .TB A WHERE COLA X UNION ALL SELECT 1,COL2 AS PARENT_UUID FROM .TC a WHERE COLA X 三个union all 看着像是5个table joi…

做好开源快速开发平台研发创新 助力行业高效发展!

随着信息化时代的到来&#xff0c;科技的力量无处不在。为了提高办公效率&#xff0c;很多大中型企业倾向于使用更为先进的软件平台来助力企业降本增效。在众多助力神器之中&#xff0c;开源快速开发平台低代码技术平台深得广大新老客户朋友的喜爱&#xff0c;它与生俱来的优势…

Python中Web开发-Django框架

大家好&#xff0c;本文将带领大家进入 Django 的世界&#xff0c;探索其强大的功能和灵活的开发模式。我们将从基础概念开始&#xff0c;逐步深入&#xff0c;了解 Django 如何帮助开发人员快速构建现代化的 Web 应用&#xff0c;并探讨一些最佳实践和高级技术。无论是初学者还…

APM2.8内置罗盘校准

如果你有外置罗盘&#xff0c;可以不用校准内置罗盘&#xff0c;可以忽略此文。推荐使用外置罗盘&#xff0c;内置罗盘容易受干扰。 使用内置罗盘需要插入飞控GPS接口旁边的跳线帽。如图&#xff1a; 如果要使用内置罗盘&#xff0c;而又加了GPS的&#xff0c;记得一定要把GPS…

手机性能过剩?三年前的改名芯片卡顿明显,中端机太弱鸡了

业界人士都喜欢说手机的性能已经严重过剩&#xff0c;笔者近期从运营商购买了两款手机&#xff0c;搭载的芯片是联发科的改名芯片&#xff0c;以及高通的低端芯片&#xff0c;使用中明显卡顿&#xff0c;显示出这些改名芯片的性能早已落后于时代。 其中一款为OPPO A2&#xff0…

【Mybatis】映射文件中获取参数的符号#{}和${}的区别

在xml映射文件中获取参数的符号都是用的#{}的方式&#xff0c;其实Mybatis还支持另一种符号来接收传递过来的参数值&#xff0c;就是${}&#xff0c;他们是区别就在与底层使用jdbc的statement不一样 #{}对应的是PreparedStatementd对象来执行sql语句 ${}对应的是Statement对象…

【TCP协议中104解析】wireshark抓取流量包工具,群殴协议解析基础

Tcp ,104 ,wireshark工具进行解析 IEC104 是用于监控和诊断工业控制网络的一种标准&#xff0c;而 Wireshark则是一款常用的网络协议分析工具&#xff0c;可以用干解析TEC104 报文。本文将介绍如何使用 Wireshark解析 IEC104报文&#xff0c;以及解析过 程中的注意事项。 一、安…

Revit——(2)模型的编辑、轴网和标高

目录 一、关闭缩小的隐藏窗口 二、标高&#xff08;可创建平面&#xff0c;其他标高线复制即可&#xff09; 三、轴网 周围的四个圈和三角表示四个里面&#xff0c;可以移动&#xff0c;不要删除 一、关闭缩小的隐藏窗口 二、标高&#xff08;可创建平面&#xff0c;其他标…

JDK9-21新特性概览(持续更新)

JDK9-21新特性概览 一、JDK9新特性1.1 JEP 102: Process API Updates简介案例风险 1.2 JEP 193: Variable Handles简介案例风险 1.3 JEP 200: The Modular JDK简介案例风险 1.4 JEP 213: Milling Project Coin简介案例1.1 try-with-resources增强1.2 接口中私有方法 1.5 JEP 22…

Sentinel-2 哨兵二号数据介绍及下载

1 Sentinel-2简介 SENTINEL-2 is a European wide-swath, high-resolution, multi-spectral imaging mission. Sentinel-2 是高分辨率多光谱成像卫星&#xff0c;一颗卫星的重访周期为10天&#xff0c;两颗互补&#xff0c;重访周期为5天。分为2A和2B两颗卫星。2A于2015年6月…

【Mybatis】映射文件中获取参数的类型是集合或数组处理

基本数据类型的参数或者对象作为参数的情况&#xff0c;在Mybatis还有一些特殊处理的参数类型要特别注意&#xff1a;如果参数类型是集合Collection&#xff08;List&#xff0c;Set&#xff09;或者是数组&#xff0c;Mybatis也会把这些类型的参数封装在一个Map对象中传递到xm…

电脑记事软件哪款安全?好用且安全的桌面记事工具

在快节奏的现代生活中&#xff0c;我们每天都要用电脑处理大量的工作。电脑不仅提升了工作效率&#xff0c;还成为了我们记录重要事项和灵感的得力助手。比如&#xff0c;在策划项目时&#xff0c;我会直接在电脑上列出要点和步骤&#xff1b;在开会时&#xff0c;我也会用电脑…

Python | Leetcode Python题解之第117题填充每个节点的下一个右侧节点指针II

题目&#xff1a; 题解&#xff1a; class Solution:def connect(self, root: Node) -> Node:if not root:return Nonestart rootwhile start:self.last Noneself.nextStart Nonep startwhile p:if p.left:self.handle(p.left)if p.right:self.handle(p.right)p p.nex…

【Mybatis】映射文件中获取单个参数和多个参数的写法

xml的映射文件中获取接口方法中传来的参数是直接用#{}的方式来获取的 那么接下来&#xff0c;我们就具体来说一下获取参数里边的各种规则和用法 1.单个参数&#xff0c;比如上面的getOneUser&#xff0c;只有一个id值作为参数 Mybatis对于只有一个参数的情况下&#xff0c;不…

【深度学习】Transformer梳理

零、前言 对于transformer&#xff0c;网上的教程使用记号、术语不一 。 最关键的一点&#xff0c;网上各种图的简化程度不一 &#xff08;画个图怎么能这么偷懒&#xff09; &#xff0c;所以我打算自己手画一次图。 看到的最和善&#xff08;但是不是那么靠谱&#xff0c;我…

Qt 项目(CMake)支持多国语言(2024/05)

目录 1.在工程手动创建languages文件夹2.修改CMakeLists.txt3.在qml上随便添加一下文字内容4.执行CMake5.把.ts和.qm添加到项目中6.翻译成英文的示例7.在main里面加载语言文件8.启动软件自动获取电脑的语言遗留问题 参考:Qt 项目(CMake)设置国际化支持 1.在工程手动创建langua…

AIGC中国开发者大会:AI Agent中国落地发展现状及多模态结合具身智能的发展展望

引言 2024年5月25日&#xff0c;第三届AIGC中国开发者大会在昆仑巢成功举办。本次大会围绕“AI Agent的国内应用现状及多模态结合具身智能的发展展望”这一主题&#xff0c;邀请了多位知名企业家、投资人以及技术专家&#xff0c;共同探讨大模型在中国各行各业的应用现状及未来…

基于粒子群算法的网络最优节点部署优化matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于粒子群算法的网络最优节点部署优化,实现WSN网络的节点覆盖最大化。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行 3.核心程序 .................…

Paddle Inplace 使用指南

Paddle Inplace 使用指南 1. 引言 在深度学习领域&#xff0c;框架的选择对模型的训练效率和资源消耗有着直接的影响。PaddlePaddle&#xff08;飞桨&#xff09;是一个由百度开发的全面、灵活和高效的深度学习平台。本文旨在介绍和分享 Paddle Inplace 机制的使用指南&#…

Java | Leetcode Java题解之第117题填充每个节点的下一个右侧节点指针II

题目&#xff1a; 题解&#xff1a; class Solution {Node last null, nextStart null;public Node connect(Node root) {if (root null) {return null;}Node start root;while (start ! null) {last null;nextStart null;for (Node p start; p ! null; p p.next) {if…