资讯专栏INFORMATION COLUMN

[分享]iOS开发-UI篇:CAlayer层的属性

xzavier / 2423人阅读

摘要:红色图层的锚点是,红色图层的锚点是,红色图层的锚点是,红色图层的锚点是,代码示例没有设置锚点。修改这个属性会产生缩放动画用于设置的背景色。也可以查看官方文档文档中标明的这些属性都是支持隐式动画的分享来源

iOS开发UI篇—CAlayer层的属性

一、position和anchorPoint

1.简单介绍

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

@property CGPoint position;

用来设置CALayer在父层中的位置

以父层的左上角为原点(0, 0)

@property CGPoint anchorPoint;

称为“定位点”、“锚点”

决定着CALayer身上的哪个点会在position属性所指的位置

以自己的左上角为原点(0, 0)

它的x、y取值范围都是0~1,默认值为(0.5, 0.5)

2.图示

anchorPoint

它的取值为0~1

红色图层的anchorPoint为(0,0)

红色图层的anchorPoint为(0.5,0.5)

红色图层的anchorPoint为(1,1)

红色图层的anchorPoint为(0.5,0)


position和anchorPoint

添加一个红色图层到绿色图层上,红色图层显示到什么位置,由position属性决定

假设红色图层的position是(100,100)

到底把红色图层的哪个点移动到(100,100)的坐标位置,锚点。

红色图层的锚点是(0,0)

红色图层的锚点是(0.5,0.5)

红色图层的锚点是(1,1)

红色图层的锚点是(0.5,0)

3.代码示例

(1)没有设置锚点。默认的锚点位置为(0.5,0.5)

#import "YYViewController.h"

@interface YYViewController ()  

@end 
 
@implementation YYViewController  

-(void)viewDidLoad {

    [super viewDidLoad];
     //创建图层
     CALayer *layer=[CALayer layer];
     //设置图层的属性
     layer.backgroundColor=[UIColor redColor].CGColor;
     layer.bounds=CGRectMake(0, 0, 100, 100);
     //添加图层
     [self.view.layer addSublayer:layer];
     
 }
 
 @end
 

显示效果:

(1)设置锚点位置为(0,0)

-(void)viewDidLoad
 {
     [super viewDidLoad];
     //创建图层
     CALayer *layer=[CALayer layer];
     //设置图层的属性
     layer.backgroundColor=[UIColor redColor].CGColor;
     layer.bounds=CGRectMake(0, 0, 100, 100);
     //设置锚点为(0,0)     
     layer.anchorPoint=CGPointZero;     //添加图层    
     [self.view.layer addSublayer:layer]; 
 }
 @end
 

显示效果:

二、隐式动画

1.简单说明

每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)
所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画

什么是隐式动画?

当对非Root Layer的部分属性进行修改时,默认会自动产生一些动画效果
而这些属性称为Animatable Properties(可动画属性)

列举几个常见的Animatable Properties:

bounds:用于设置CALayer的宽度和高度。修改这个属性会产生缩放动画

backgroundColor:用于设置CALayer的背景色。修改这个属性会产生背景色的渐变动画

position:用于设置CALayer的位置。修改这个属性会产生平移动画

2.代码示例

#import "YYViewController.h"
 
@interface YYViewController () 

@property(nonatomic,strong)CALayer *layer; 

@end  

@implementation YYViewController  

-(void)viewDidLoad {     

    [super viewDidLoad];     //创建图层     
    CALayer *mylayer=[CALayer layer];     //设置图层属
    mylayer.backgroundColor=[UIColor brownColor].CGColor;         
    mylayer.bounds=CGRectMake(0, 0, 150, 100);     //显示位置     
    mylayer.position=CGPointMake(100, 100);     
    mylayer.anchorPoint=CGPointZero;     
    mylayer.cornerRadius=20;     //添加图层     
    [self.view.layer addSublayer:mylayer];     
    self.layer=mylayer; 
}  
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {     //隐式动画     
    self.layer.bounds=CGRectMake(0, 0, 200, 60);              
    self.layer.backgroundColor=[UIColor yellowColor].CGColor; 
} 
@end

效果:

关闭隐式动画:

[CATransaction begin];
[CATransaction setDisableActions:YES];
//隐式动画
self.layer.bounds=CGRectMake(0, 0, 200, 60);
self.layer.backgroundColor=[UIColor yellowColor].CGColor;
[CATransaction commit];

3.如何查看CALayer的某个属性是否支持隐式动画?

可以查看头文件,看有没有Animatable,如果有则表示支持。

也可以查看官方文档

文档中标明的这些属性都是支持隐式动画的


分享来源:
http://www.cnblogs.com/wendin...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/16083.html

相关文章

  • iOS开发UI--iOS动画(Core Animation)总结

    摘要:能够检测动画的执行和结束。关键帧动画中的执行路径过渡动画的动画类型,系统提供了四种过渡动画。关键帧动画和都属于的子类。里面的元素称为关键帧。动画对象会在指定的时间内,依次显示数组中的每一个关键帧可以设置一个让层跟着路径移动。 一、简介 IOS 动画主要是指Core Animation框架。官方使用文档地址为:Core Animation Guide。Core Animation是IOS...

    miracledan 评论0 收藏0
  • CALayer的基本使用

    摘要:设置边框在中必须导入框架才能设置颜色粗细设置圆角设置阴影设置阴影偏差向左向右偏移设置阴影透明度相当于会将超出边框的剪切掉主层与子层控件的不一定只有一个位于根节点的层称为主层。 图层 UIView之所以能显示到界面上是因为有一个图层。(CALayer) 
 一、CALayer的基本使用 通过CALayer对象, 可以很方便的调整UIView的一些外观属性。 
 设置边框(在IO...

    Shihira 评论0 收藏0
  • 图层几何学 -- iOS Core Animation 系列二

    摘要:图层树和寄宿图系列一介绍了图层的基础知识和一些属性方法。的值实际指的是图层旋转之后整个轴对齐的矩形区域。和系列一中提到的类似,用单位坐标来表示默认情况是。可以通过指定和值小于或者大于,使它放置在图层范围之外。 《图层树和寄宿图 -- iOS Core Animation 系列一》介绍了图层的基础知识和一些属性方法。这篇主要内容是学习下图层在父图层上怎么控制位置和尺寸的。 1.布局 首先...

    Doyle 评论0 收藏0
  • 视觉效果 -- iOS Core Animation 系列三

    摘要:边框绘制在图层边界里面,在所有子图层之前。对上面的示例代码坐下调整运行效果如下如上面的示例的结果一样,边框并不会把寄宿图或子图层的相撞计算出来。属性可以实现组透明,如果设置成,图层和它的子图层会被合成一个整体图片。 本片文章前三章内容大家比较常用,后面的可能会不那么常用,前面的基础内容不想看了可以直接从第4段开始 圆角 conrnerRadius 这个功能还是很常见的,本来不想记了,为...

    idealcn 评论0 收藏0
  • Swift 特性 - 收藏集 - 掘金

    摘要:介绍掘金什么是是基于思想实现的类库。此次邀请的嘉宾在方面有所实践探索,分别来自腾讯淘宝公司。超强大的服务器端掘金摘要如今已经开源,而且支持多平台,一些团队正在试图让成为开发的有效语言。 ReSwift 介绍 - iOS - 掘金 什么是 ReSwift ReSwift 是基于 Redux 思想实现的 Swift 类库。基本的流程如下 当用户点击了视图上的某个元素时,会发出一个 Acti...

    MingjunYang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<