CALayer与UIView的关系和作用

2024-03-29 04:18
文章标签 作用 关系 uiview calayer

本文主要是介绍CALayer与UIView的关系和作用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


一,CALayer原理

iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层在创建UIView对象时,UIView内部会自动创建一个图层(CALayer对象),通过UIViewlayer属性可以访问这个层。UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示。那么这个过程是怎么的呢?

首先可以认为,UIView是其属性CALayer的delegate,即:

    UIView *view;

    view.layer.delegate == view;

view的完整显示过程:

    1. view.layer会准备一个Layer Graphics Contex(图层类型的上下文)

    2. 调用view.layer.delegate(view)drawLayer:inContext:,并传入刚才准备好的上下文

    3. viewdrawLayer:inContext:方法内部又会调用viewdrawRect:方法

    4. view就可以在drawRect:方法中实现绘图代码,所有东西最终都绘制到view.layer上面

    5. 系统再将view.layer的内容拷贝到屏幕,于是完成了view的显示


二,CALayer的使用举例

通过操作CALayer对象,可以很方便地调整UIView的一些外观属性,比如:

> 阴影
> 圆角大小
> 边框宽度和颜色

代码示例:

    //设置图层的颜色self.yellowView.layer.backgroundColor = [UIColor blueColor].CGColor;            //设置圆角   self.yellowView.layer.cornerRadius = 15;       //设置阴影       //设置阴影的颜色   self.yellowView.layer.shadowColor = [UIColor greenColor].CGColor;        //阴影的透明度   self.yellowView.layer.shadowOpacity = 0.5;    //阴影的显示起始位置   self.yellowView.layer.shadowOffset = CGSizeMake(20,20) ;//设置形变属性self.imageView.layer.transform = CATransform3DMakeTranslation(30,50,0);self.imageView.layer.transform = CATransform3DMakeScale(1,2,1);


这篇关于CALayer与UIView的关系和作用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/857576

相关文章

MySQL日志UndoLog的作用

《MySQL日志UndoLog的作用》UndoLog是InnoDB用于事务回滚和MVCC的重要机制,本文主要介绍了MySQL日志UndoLog的作用,文中介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、Undo Log 的作用二、Undo Log 的分类三、Undo Log 的存储四、Undo

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

Java中自旋锁与CAS机制的深层关系与区别

《Java中自旋锁与CAS机制的深层关系与区别》CAS算法即比较并替换,是一种实现并发编程时常用到的算法,Java并发包中的很多类都使用了CAS算法,:本文主要介绍Java中自旋锁与CAS机制深层... 目录1. 引言2. 比较并交换 (Compare-and-Swap, CAS) 核心原理2.1 CAS

JAVA transient 关键字作用详解

《JAVAtransient关键字作用详解》Java的transient关键字用于修饰成员变量,使其不参与序列化过程,通过自定义序列化方法,可以手动控制transient变量的序列化行为,本文给大... 目录一、transient关键字作用二、原理详解三、典型使用场景四、代码示例五、注意事项六、与 stat

Spring Boot/Spring MVC核心注解的作用详解

《SpringBoot/SpringMVC核心注解的作用详解》本文详细介绍了SpringBoot和SpringMVC中最常用的15个核心注解,涵盖了请求路由映射、参数绑定、RESTfulAPI、... 目录一、Spring/Spring MVC注解的核心作用二、请求映射与RESTful API注解系列2.1

C#中的sealed修饰符的作用详解

《C#中的sealed修饰符的作用详解》在C#中,sealed修饰符的作用是“密封”用来阻止类被继承,或者阻止方法/属性在派生类中被重写,接下来通过本文给大家介绍C#中的sealed修饰符的作用详解,... 目录✅ 1.sealed用于类(class)作用:示例:✅ 2.sealed用于方法或属性(必须与

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于