Day21

回顾:

1 Core Animation

          CA上面是UIKit

          CA的下边是Core Animation

2. 针对Core Animation编程

          针对CALayer编程,通过UIViewlayer属性达到CALayer的对象

          通过LAyer属性可以做效果

          a.圆角

          b.添加子视图

          c.设置背景色阴影

          d.使用CABasicAnimation实现动画的步骤:

          step1:创建动画对象使用构造方法时,传入的是一个固定的字符串------position 位移   transform 旋转   opacity 变形

          step2:设置属性 FormValue  ToValue

          step3:将动画效果注册到一个子视图对象的Layer层中

     e.针对CALayer做变形时,特别是旋转动画,可以是3D的变形分别绕X Y Z 三个轴进行旋转,同时需要使用一组特有的函数。

          CATransform3DMakeXXX或者是没有make 的那组函数

 3. UIKit Dynamic

          3.1 UIDynamic Animation描述力场

          3.2 行为:UIGravityBehavior 重力行为

                            UICollectionBehavior碰撞

                            UIAttachmentBehavior吸附行为

                            UISnapBehavior闪烁


今天:

1. 在设置吸附的时候可以设置吸附行为的频率

          //设置吸行为的频率

    self.attachmen.frequency=1; 值越大橡皮筋越短

     //设置吸附行为的阻尼(弹性系数)

     self.attachmen.damping=0.1;

          1.4 闪烁行为:UISnapBehavior

          1.5 推力行为:UIPushBehavior

2. 弹簧效果的短消息

          思路:利用手指移动的距离,以及item离手指点的位置的远近,产生一个变化的值,使用这个值来修改所有CollectionView中的item的锚点

     步骤:

                   step1:首先计算scroll的距离SCrollDelta

                   step2:为了得到每个item与触摸的点的之间的距离,需要直到触摸点的坐标touchLocation

                   step3:可以根据距离对每个锚点进行设置了,简单计算出来原来锚点与触摸点之间的距离distanceFromTouch并计算一个系数

                   step4:接下来,对于当前的item 我们要是、获取其当前锚点的位置,然后将其根据scrollDelta的系数和刚才计算的系数,重新设定锚点的位置。

                   step5:最后需要告诉UIDynamicAnimation已经完成了对完成了对锚点的更新,现在可以开始跟新位置,并随时准备collectionView取得LayoutAttibutes的收据了


3. 通知(notification

          3.1 是什么?

          是一个观察这模式的具体现

          观察着模式:对一个对象A想直到另一个B状态是否发生了改变,思路是在B 对象上注册一个观察着,当对象B的状态发生改变时,通知对象A 对象A收到通知后进行的处理的一种模式。

          其中观察着模式的一种解决方案叫做----------广播

          系统中的通知就是广播的一种体现

3.2 好处:

                   一个对象不需要知道消息的接受者是谁,就可以将一些消息发送给需要的接受者。

                   有时发送消息的对象无法知道那些对象,有多少对象接受消息,也不知道对象是否存在。

                   有时消息的接受着和发送或太远(远  是指不是具体的  是关系如控制器和视图就是近但是Model离控制器就是远)

          3.3

                   1》接收者:找到通知中心

                   NSNotificationCenter,注册要收听的一个具体频道addObserver

                   2>发送者:找到通知中心,创建通知对象(NSNotification)使用通知中心来发送这个消息(postNotification

                   3》接受者 收到消息  处理消息(掉方法)

                   4》停止收听 不需要收听时,找到通知中新  注册removeObserver

          3.4 关键的类

                   NSNotificationCenter  是一个单例类,使用defaultCenter方法永远返回同一个对象,以此保证中心对象只有一个

                   NSNotification通知类(封转通知的内容等信息)


4 键盘通知

          键盘弹起的通知名称:

                   UIKeyboardWillShowNotification

          键盘收起的通知名称

                   UIKeyboardWillHideNotification