iOS 交互、手势与动画编程|青训营笔记

103 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第6天

iOS交互与手势

手势识别器

  • UIPanGestureRecongnizer(拖动)
  • UIPinchGestureRecongnizer(捏合)
  • UIRotationGestureRecongnizer(旋转)
  • UITapGestureRecongnizer(点按)
  • UILongPressGestureRecongnizer(长按)
  • UISwipeGestureRecongnizer(轻扫)

iOS事件核心类

  • UITouch
    • 抽象了手指触摸屏幕的一个类
    • 每一个实例代表手指的一次触摸
    • 携带有位置、大小等关键信息
  • UIEvent
    • 抽象了由一个或多个UITouch所造成的一个事件
    • 每一个实例代表一个触摸事件,比如单击 长按事件
  • UIResponder
    • 响应和处理事件的类
    • 当有事件发生,系统会去寻找最合适的UIResponder
    • 系统告知UIResponder有事件发生时,会把相应的UIEvent传递

iOS事件传递及相应链

  • Application将Event发送给keyWindow
  • keyWindow由根视图开始,遍历子视图查找响应者视图
  • 通过hitTest:withEvent判断响应者
    • 判断自身是否能够响应:userInteractionEnabled、hidden、alpha
    • 判断触摸点是否在自己frame范围内(pointInside、withEvent)
    • 从后往前遍历自己的子视图调用该方法、判断是否有返回view
    • 如果子视图都没有能力响应,返回自己

iOS动画编程

  • 视图动画UIView Animation
    • UIView动画接口
    • UIView弹簧动画
    • UIView关键帧动画
  • 核心动画Core Animation
    • 可以实现更加精细、复杂的动画
    • 通过Core Animation API直接操作CLayer生成动画
    • UIView Block动画是对Core Animation API的封装
    • 可以设置动画代理来感知动画的开始结束
    • 直接使用原子化的对象
    • 核心动画类
    • Core Animation基本动画
    • Core Animation关键帧动画
    • Core Animation动画组
  • 第三方动画库lottie
  • 动力学动画UIDynamic
    • UIGravityBehavior重力效果
    • UICollisionBehavior碰撞效果
    • UIAttachmentBehavior附着效果
    • UISnapBehavior吸附效果
    • UIPushBehavior推力效果
    • UIFieldBehavior场力效果
    • UIDynamicItem:动力学元素,模拟仿真物理学动画的控件,是一个协议,UIView等已经实现
    • UIDynamicBehavior:仿真行为,
    • UIDynamicAnimator:仿真动画者,持有一系列仿真行为,协调Items在坐标系View中展示动画
  • 粒子系统CAEmmiterLayer