[IOS]CoreAnimation基础[翻译4部分]

构建图层的层次

大多数情况下,使用图层的最好方式就是和视图对象一起使用。然而有时你需要通过额外的图层来增强你的视图层次。你可能使用图层来提高性能或者实现那些视图无法达到的某一特性。在这种情况下,你需要知道如何管理和创建图层的层次结构。


将图层以图层层次的结构管理

图层的层次就像视图的层次。你将一个图层放进某一父图层就创建了一种parent-child管理在图层之间。这种关系影响到子图层各方面。比如,子图层的内容在父图层之上,子图层的位置相对于父图层的相对做标记。同时父视图的转换也会影响到子图层。


添加,插入,移除图层

每一个图层对象都有方法来进行添加,移除,插入。表4-1总结了这些方法

行为 方法 描述

添加图层 addSublayer: 在当前图层内添加新的子图层。子图层在图层列表的最后。这就导致了子图层显示在同一层次(有相同的zPostion属性的)的最上面

插入图层 insertSublayer:above: 在某一位置插入图层,图层的位置由zPosition决定

insertSublayer:atIndex:

insertSublayer:below:

移除图层 removeFromSuperlayer 从父视图中移除自身

图层替换 replaceSublayer:with: 很简单的替换



调整和设置图层的位置

当添加和插入图层的时候,必须制定图层的大小和位置。可以在将图层添加进图层层次之后进行修改,

但是记得在新建的图层并赋值。

通过设置图层的bounds属性设置图层大小,position属性来设置图层在父图层中的位置。position属性总是相对于图层的定位点(anchor point),默认图层的定位点是在中心。如果你不给图层赋值大小和位置属性,那么这些都默认是(0,0)。

myLayer.bounds = CGRectMake(0, 0, 100, 100);

myLayer.position = CGPointMake(200, 200);




图层的层次性如何影响动画

某些父图层的属性能够影响其子图层的动画特性。比如速度speed属性,对于动画速度来说就是加速动画效果。默认是1.0,如果改成2.0,将会让本来同等时间的动画能够播放两边,因此动画只需要原本一般的时候完成。当父视图的speed改成2.0后,子视图完成速度也会变成两倍(子视图是默认1.0)。如果子视图和父视图都将speed 都设成2.0,那么子视图中的动画将会以四倍速完成。

但是大多数父视图对自视图的影响都是可预知的。比如对父视图的旋转将会影响到子视图。



调整图层层次的布局

在iOS中,很多视图都是基于图层的视图,很少出现单独的图层,所以这一部分对于IOS并不是很重要。但是在OS X中却是很有用的,例子讲解了很多OS X中的布局。所以略过。




多图层和裁剪

不像视图,子图层并不会自动裁剪超出子图层边界的内容。子图层默认允许完全展示图层内容。但是如果你要重新使得裁剪设置生效,那么久将masktToBounds设置为YES。

图层裁剪遮蔽效果的形状包括图层的圆角。如果指定了圆角弧度,图4-3说明了图层的maskToBouns属性是如何影响圆角的。当该属性设置为NO的时候,子图层将完全的展示其内容。将该属性设置为YES后,超出部分将被裁减。





转换图层间的坐标

有时,你可能需要将该图层中的坐标值,转换成在另外一个图层中的坐标。CALayer类提供了一组简单的转换途径让你达到该目的:

convertPoint:fromLayer:

convertPoint:toLayer:

convertRect:fromLayer:

convertRect:toLayer:

除了转换点和方框值,你也可以转换两个图层间的时间值。每一个图层都有自己局部时间间隔,并使用该时间间隔来同步动画的起始和结束。这些时间间隔被默认方式同步。但是,如果你改变一组动画的速度,那么时间间隔就必须统一。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值