Day21
回顾:
1 Core Animation
在CA上面是UIKit
在CA的下边是Core Animation
2. 针对Core Animation编程
针对CALayer编程,通过UIView的layer属性达到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