• IOS之UIKit_Day21


      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

     

  • 相关阅读:
    【dp】船
    【dp】PKU 1952 buy low,buy lower
    【dp】合唱队形
    【dp】导弹拦截
    【dfs】POJ1321 棋盘问题
    工程师工作与学习的模式
    如何进行大规模在线数据迁移(来自Stripe公司的经验)
    Laravel事件监听器listener与事件订阅者Subscriber的区别
    微信小程序时间处理问题
    [翻译] Facebook HHVM 团队封闭开发三周成果展
  • 原文地址:https://www.cnblogs.com/katydid/p/4324805.html
Copyright © 2020-2023  润新知