zoukankan      html  css  js  c++  java
  • iOS基础

    ==================================================================

    一、触摸事件&手势识别

    1> 4个触摸事件,针对视图的

    2> 6个手势识别(除了用代码添加,也可以用Storyboard添加)

    附加在某一个特定视图上的,其中需要注意轻扫手势通常会附加到根视图上。

    大部分操作,都会在touchesBegan事件中处理,以防夜长梦多!

    * touchesEnd事件通常用于处理touchesMoved事件中的收尾工作!

    响应者链条只需要理解“链条”的产生和事件传递的顺序即可。

    ==================================================================

    二、Quartz2D绘图

    1> 以图形方式,实时绘图的技术,可以高效的绘制简单图形,增加界面的表现

    2> 核心动画 <- CALayer(负责UIView中的内容的) <- Quartz2D

    Quartz2DC语言的框架!

    Quartz2D是跨平台(MAC & iOS)的,大多数跨平台的技术都是C语言框架的。

    GCD(多线程)

    ==================================================================

    三、CALayer图层

    1) 每一个视图都有一个根图层,图层用来负责视图中内容的显示,不负责响应事件

    2) 图层可以添加子图层,每一个视图有且仅有一个根图层

    3) 所有的非根图层,都具有隐式动画属性,直接修改这些属性,就可以产生动画

    4) 核心动画的本质是通过以修改图层键值路径的方式实现动画的!

    5) 在动画过程中,图层实际上是将视图中的内容生成一张图像参与动画,视图本身的位置并不会发生变化,其目的就是为了提高性能!

    图层的工作顺序

    1) - (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

    代理方法中绘制根图层中的所有内容

    绘制结束后,调用视图的

    2- (void)drawRect:(CGRect)rect

    从代理方法中,将绘制结果(图像)传给drawRect,直接将内容拷贝到屏幕

    3) - (void)drawInContext:(CGContextRef)ctx

    绘制子图层中的内容

    关于CALayer需要掌握的内容:

    1. 记住可动画属性

    position 位置

    backgroundColor 背景颜色

    opacity 透明度

    transform 形变

    cornerRadius 圆角

    content 内容(id)图像

    ==================================================================

    四、CAAnimation 

    基本动画和关键帧动画都是通过修改图层的可动画属性实现的动画方式,以健值路径的方式修改。

    要修改属性,可以利用view.layer.xxx智能提示帮助,不用硬记,能眼熟就行。

    1) CABasicAnimation

    fromValue 从哪里来

    toValue 到哪里去

    2) CAKeyFrameAnimation

    values 一堆数值的数组

    path 针对position属性的动画

    3)   CAAnimationGroup

    将基本动画和关键帧动画组合并发使用

    需要注意的是:keyPath不要重复,群组中的每个动画只能负责修改一个keyPath

    4) *** CATransition(转场) ***

    type:转场的类型

    subType:方向(上下左右)

    所有的动画都不要忘记指定duration

    其他常用属性

    * repeatCount 重复次数

    * autoReverse 自动翻转

    在绝大多数应用程序开发中,基本动画和都可以使用块代码替代。关键帧动画在使用负责效果时点缀的。

    对以上动画有印象,知道大概的使用方法,在需要的时候,去哪里查询即可。

    转场动画使用还是比较频繁!

    ==================================================================

    五、UIDynamic UI动力学

    使用步骤:

    1> 实例化一个animator

    2> 实例化要参与仿真的视图或者控件

    3> 实例化仿真行为

    重力: Gravity

    碰撞: Collision 有代理方法,可以添加边界碰撞

    附加: Attachment 有刚性、弹性区别,设置damping即可

    可以附加到一个点,也可以附加到一个视图上

    吸附: Snap 设置damping

    : Push 单次推和连续推

    如果是单次推,需要将active = YES

    需要指定

    力量

    角度

    元素属性,通常只需要改弹力系数即可

    4> 将行为添加到animator,仿真立刻开始启动

    ==================================================================

    六、KVC & KVO

    KVC - Key Value Coding

    KVO - Key Value Observer

    KVC是通过键值路径的方式间接访问对象属性的,CAAnimation中可以通过KVC直接动态添加属性。

    KVO是可以通过键值路径的方式观察某一个对象属性的变化,并及时通知!

    关于KVO一定记住需要释放,否则会影响性能!

    ==================================================================

  • 相关阅读:
    Linux之定时器与时间管理 【转】
    LDAP研究
    Mac中使用svn进行项目管理
    英国调查报告称中国梦吸引力首超美国梦
    怎样删除在Github中创建的项目
    MySQL分组数据
    Eclipse ADT 插件安装慢的解决的方法
    iOS插件化研究之中的一个——JavaScriptCore
    二维码的妙用:通过Zxing实现wifi账号password分享功能
    CF(435D
  • 原文地址:https://www.cnblogs.com/monicaios/p/3523341.html
Copyright © 2011-2022 走看看