iOS-Core-Animation-Advanced-Techniques 要点小结。
iOS Core-Animation 高级技术这书之前看了一遍,第二次看时发现第一次看的理解过的内容又要重新想一遍,所以就记录下来,方便快速回忆,查阅。实践性不需要怎么样理解的一般只有内容概括。
一、图层树
1、图层与视图:每一个视图UIView都默认关联着一个图层CALayer.一个视图树中就会有一个平行的图层树相关联。视图封装了与平台相关的触摸事件处理。图层只负责与显示相关的。
二、寄宿图
contents属性,要给个CGImage、contentGravity内容显示方式,如居中,放大填充等。maskToBounds 裁剪。contentsCenter其实是九宫切。自定画layer就可以实现CALayerDelegate。
三、图形几何学
frame、bounds、center、postion、anchorPoint.之间的关系。
首先有公式:
frame.origin.x = postion.x - anchorPoint.x*bounds.size.width。
frame.origin.y = postion.y - anchorPoint.y*bounds.size.height。
即:postion.x = frame.origin.x + anchorPoint.x*bounds.size.width
postion.y = frame.origin.y + anchorPoint.y*bounds.size.height
1、frame 与 bounds. frame是相对父view坐标系下的坐标.bounds是相对于自身坐标系下的坐标。修改bound.origin会改变自身坐标系的原点,从而其子view是会被移动,但自身不会动,而且这个修改还会有叠加效果,即a addSubView b b addSubView c. c 就会叠加对于a、b 对bound.origin修改从而移动。
2、position、anchorPoint、frame . position与anchorPoint是重合的点,只是他们的表示方式与参照系是不一样的。position的参照是父layer坐标系中的坐示,anchorPoint是参照layer本身坐标系中以宽高的比例,通常是(0~1).但也可以设置为其它值。
3、修改position、anchorPoint其它一个,不会影响另一个在其坐标系上的值。所以修改其中一个frame.origin会变。
4、修改bounds的宽高,position与anchorPoint不变,但frame会变。
5、anchorPoint还是一个参照点,所有的变形操作以它为参照点。
6、虽然layer不处理件,便它也有一系列接口辅助处理触摸事件相关需求。
四、视觉效果
这里面没什么只是有一些简单的圆角、阴影、组合透明及mask实现一些特殊的效果
五、变换
变换里面有一系列系统api帮助我们方便的进行变换
六、专有图层
有一系列的专用图层供我们用,当我们用系统控件实现不方便是可以考虑。CAShapeLayer、CATextLayer、CATransformLayer、CAGradientLayer、CAReplicatiorLayer、CAScrollerLayer、CATiledLayer、CAEmitterLayer、CAEAGLLayer、AVPlayerLayer.但是直接使用Layer不会有UIView中的那些自动布局的特性。一般做法重写layerClass 返回对应要使用的layer,作为View的默认Layer.
七、八。隐式动画、显示动画
隐式动画:当改变了CALayer的可动画属性时,CALayer会以动画的方式转换到新的属性值,这种是就是属性动画。系统会在每个run loop周期中自动开始一次新的事务CATranscation(老是混淆CATransition)。iOS4 Block出来后,苹果推出了一套以UIView 接口,在block内写动画体。CALayer的presentationLayer方法返回呈现, modelLayer返回模型。通过presentationLayer和hitTest可以返让动画中的layer响应事件。CALayer隐式动画实步骤:
1、图层检查是否有代理CALayerDelegate,从delegate的-actionForLayer:forKey:方法反返回动画结果。
2、1没有就是查actions字典,没有再查style字典,否则再从标准行为defaultActionForKey:中查。
最终有结果就会有动画,返回nil就不会有动画。
3、UIView就是通过-actionForLayer:forKey:对所有返回nil,禁用了它所关联默认Layer的隐式动画。
4、动画分类,基础动画、动画组。隐式过渡CATransition。
九、图层时间
speed:动画的速度、对于一个时长为1秒的动话,设置speed为2.0那么动画其实0.5秒就会结束。
timeoffset:快进到某一点,那那一点开始。
speed和提么offset属性会影响到子动画。动画时间有converTime:fromLayer的接口转换不同的参考系。
通过speed设置0,手动调整timeoffset可以实现手势动画。
出处:http://www.cnblogs.com/chenxianming/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任权利。
posted on 2017-02-09 15:25 chenxianming 阅读(224) 评论(0) 编辑 收藏 举报