CALayer介绍和隐式动画

本文深入探讨了CALayer与UIView的特性、属性和功能差异,详细解释了如何选择合适的组件来构建UI界面,并阐述了CALayer在性能方面的优势。重点介绍了CALayer的关键属性、隐式动画机制及其在不同场景下的应用策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.CALayer简单介绍:

   CALayer是用来显示的图层类,其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层。

CALayer是定义在QuartzCore框架中的,CGImageRefCGColorRef两种数据类型是定义在CoreGraphics框架中的,UIColorUIImage是定义在UIKit框架中的
.QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOSMacOS X上都能使用C语言编写),但UIKit只能在iOS使用Objective-C
,为了保证可移植性,QuartzCore不能使用UIImageUIColor只能使用CGImageRefCGColorRef
导入其他框架的方式: 选中项目,

2.CALayer常见属性

宽度和高度

@propertyCGRect bounds;

位置(默认指中点,具体由anchorPoint决定)

@propertyCGPoint position;

锚点(x,y的范围都是0-1),决定了position的含义

@propertyCGPoint anchorPoint;

背景颜(CGColorRef类型)

@propertyCGColorRef backgroundColor;

形变属性

@propertyCATransform3D transform;

边框颜(CGColorRef类型)

@propertyCGColorRef borderColor;

边框宽度

@propertyCGFloat borderWidth;

半径

@propertyCGFloatcornerRadius;

内容(比如设置为图片CGImageRef)

@property(retain)id contents;


UIViewCALayer的选择


通过CALayer,就能做出跟UIImageView一样的界面效果

既然CALayerUIView都能实现相同的显示效果,那究竟该选择谁好呢
对比CALayerUIView了一个事件处理的功能。也就是说CALayer不能处理用户的触摸事件,UIView可以
如果显示出来的东西需要跟用户进行交互的话,UIView如果不需要跟用户进行交互,UIView或者CALayer都可以
CALayer性能会高一些,因为它少了事件处理的功能,更加轻量级

UIView: 接受和处理系统事件、触摸事件。
CALayer显示内容

CALayer2个非常重要的属性positionanchorPoint

@propertyCGPoint position;
用来设置CALayer在父层中的位置

@propertyCGPoint anchorPoint;
称为定位点、“锚点”
决定着CALayerposition属性所指的是哪个点
以自己的左上角为原点(0, 0)
它的xy取值范围都是0~1默认值为0.5,0.5

隐式动画(可动画属性)

每一个UIView内部都默认关联着一个CALayer,我们可称这个LayerRootLayer(根层

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

什么是隐式动画?
RootLayer部分属性进行修改时默认会自动产生一些动画效果
而这些属性称为AnimatableProperties(可动画属性)

列举几个常见的AnimatableProperties
bounds用于设置CALayer的宽度和高度。修改这个属性会产生缩放动画
backgroundColor用于设置CALayer背景色。修改这个属性会产生背景色的渐变动画
position用于设置CALayer位置。修改这个属性会产生平移动画

关闭隐式动画

可以通过动画事务(CATransaction)关闭默认的隐式动画效果

[CATransactionbegin];

[CATransactionsetDisableActions:YES];

self.view.layer.position = CGPointMake(100, 100);

[CATransactioncommit];





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值