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

一、接下来,我们来说这个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,就搞定了,

</

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

帆软报表点击表格给数据集传递参数案例

一、效果 有四个模块&#xff0c;分别是采购总金额&#xff0c;采购总数量&#xff0c;采购合同数量&#xff0c;采购合同申请数量通过点击单元格上的月份&#xff0c;展示不同的月份数据&#xff0c;进行单元格和表格之间的联动 二、准备好数据库表和展示数据内容 2.1 建表 …

【Java EE】网络原理——HTTP响应

目录 1.认识“状态码”&#xff08;status code&#xff09; 1.1 200 OK 1.2 404 Not Found 1.3 403 Forbodden 1.4 Method Not Allowed 1.5 Internal Sever Error 1.6 504 Gsteway Timeout 1.7 Move temporarily 1.8 Moved Permanently 1.9状态码小结 2.认识响应“报…

c语言 分而治之(施特拉森矩阵乘法)

给定两个大小分别为 nxn 的方阵 A 和 B&#xff0c;求它们的乘法矩阵。 朴素方法&#xff1a;以下是两个矩阵相乘的简单方法。 void multiply(int A[][N], int B[][N], int C[][N]) { for (int i 0; i < N; i) { for (int j 0; j < N; j) { …

【Python特征工程系列】利用SHAP进行特征重要性分析-决策树模型为例(案例+源码)

这是我的第290篇原创文章。 一、引言 SHAP 属于模型事后解释的方法&#xff0c;它的核心思想是计算特征对模型输出的边际贡献&#xff0c;再从全局和局部两个层面对“黑盒模型”进行解释。SHAP构建一个加性的解释模型&#xff0c;所有的特征都视为“贡献者”。 对于每个预测样…

北京证券公司港股通交易佣金手续费最低是多少?万0.8?港股通纳入规则是怎么样的?

港股通交易佣金概述 港股通的交易佣金可能会因证券公司和投资者的不同而有所差异。 北京证券公司的港股通交易佣金最低可能万分之零点八&#xff08;0.008%&#xff09;&#xff0c;但这需要投资者与证券公司客户经理了解&#xff0c;进行沟通和申请。 一般来说&#xff0c;…

树莓派部署harbor_arm64

文章目录 树莓派4b部署Harbor-arm64版本docker-compose维护命令访问harbor 192.168.1.111认用户名密码admin/Harbor12345 树莓派4b部署Harbor-arm64版本 harbor-arm版本 部署&#xff1a;参考 wget https://github.com/hzliangbin/harbor-arm64/releases/download/v1.9.3/ha…

常用压力、流量单位换算表

一、压力为单位面积所承受的力 压力&#xff1a;绝对压力 、表压力 、大气压力。相互关系&#xff1a;绝对压力表压力大气压力 绝对压力:当压力表示与完全真空的差。测量处的实际压力。 表压力:当表示其气体数值与该地域大气压力的差值。 大气压力&#xff1a;由大气重量所…

网吧|基于SprinBoot+vue的网吧管理系统(源码+数据库+文档)

网吧管理系统 目录 基于SprinBootvue的网吧管理系统 一、前言 二、系统设计 三、系统功能设计 1 管理员功能模块 2 网管功能模块 3 会员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#…

Docker搭建FRP内网穿透服务器

使用Docker搭建一个frp内网穿透 在现代网络环境中&#xff0c;由于防火墙和NAT等原因&#xff0c;内网设备无法直接被外网访问。FRP (Fast Reverse Proxy) 是一款非常流行的内网穿透工具&#xff0c;它能够帮助我们将内网服务暴露给外网。本文将介绍如何在Linux服务器上使用Do…

LitCTF2023

[LitCTF 2023]enbase64 base 64 里面有一个换表的函数 写代码 #include<stdio.h> #include<string.h> #include<stdlib.h> int main() {char *result; char Destination[65]; int v3[65];int j;int i; char Source[]"ABCDEFGHIJKLMNOPQRSTUVWXYZabcde…

多线程新手村3--多线程代码案例

1.1 单例模式 单例模式是设计模式中非常经典的一种。那么有同学肯定就会好奇了&#xff0c;什么是设计模式呢&#xff1f; 设计模式简单的说就是程序员的“棋谱”&#xff0c;我们下象棋时肯定或多或少都背过棋谱&#xff0c;例如当头炮、马后炮等&#xff0c;设计模式也是这…

防火墙技术基础篇:基于Ensp配置防火墙NAT server(服务器映射)

配置防火墙NAT server(服务器映射) 什么是NAT Server (服务器映射) NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是一种允许多个设备共享一个公共IP地址的技术。NAT Server&#xff0c;也称为服务器映射&#xff0c;是NAT技术中的一种应…

Windows找出权限维持的后门

Windows权限维持主要包含活动隐藏、自启动等技术。 隐藏文件 利用文件属性 最简单的一种隐藏文件的方式&#xff0c;文件右键属性&#xff0c;勾选隐藏&#xff0c;点击确定后&#xff0c;在这个文件里看不到刚刚的文件了。 如果要让文件显示出来&#xff0c;就点击查看&…

经典文献阅读之--SMERF(通过标清导航地图增强车道感知和拓扑理解)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&#xff0c;并附带200G…

目标检测——家庭日常用品数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …

给pdf加水印,python实现

from PyPDF2 import PdfReader, PdfWriterdef add_watermark(pdf_file_in, pdf_file_mark, pdf_file_out):"""把水印添加到pdf中"""pdf_output PdfWriter()input_stream open(pdf_file_in, rb)pdf_input PdfReader(input_stream, strictFalse…

Linux java jni调用C++封装动态库

由于项目中java需要调用第三方提供的C动态库&#xff1b;由于第三方动态库传入的参数较多&#xff0c;还伴随着指针传入操作&#xff0c;导致java调用极为不便&#xff01;因此催生出对于第三方的C动态库进行二次封装。java调用只需按结构传入一个结构化的string即可。话不多说…

河南道路与桥梁乙级资质升级门槛条件解读

河南道路与桥梁乙级资质升级门槛条件解读如下&#xff1a; 一、企业基本条件 法人资格&#xff1a; 企业需具备独立企业法人资格&#xff0c;能够独立承担民事责任。注册资金&#xff1a; 企业的注册资金应不少于100万元人民币&#xff0c;这一数字直接体现了企业的经济实力和…

Python自然语言处理(NLP)库之NLTK使用详解

概要 自然语言处理(NLP)是人工智能和计算机科学中的一个重要领域,涉及对人类语言的计算机理解和处理。Python的自然语言工具包(NLTK,Natural Language Toolkit)是一个功能强大的NLP库,提供了丰富的工具和数据集,帮助开发者进行各种NLP任务,如分词、词性标注、命名实体…

基于springboot实现医疗挂号管理系统项目【项目源码+论文说明】

基于springboot实现医疗挂号管理系统演示 摘要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&…