CALayer介绍和隐式动画

1.CALayer简单介绍:

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

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

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 一样的界面效果

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

U IView : 接受和处理系统事件、触摸事件。
C ALayer 显示内容

CALayer 2 个非常重要的属性 position anchorPoint

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

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

隐式动画(可动画属性)

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

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

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

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

关闭隐式动画

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

[CATransactionbegin];

[CATransactionsetDisableActions:YES];

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

[CATransactioncommit];





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值