CAAnimation和CALayer类扩展了NSKeyValueCoding协议,给键添加默认值,扩展了封装协议,支持CGPoint、CGRect、CGSize和CATransform3D关键路径。
1.1  键-值编码兼容的容器类
  CALayer和CAAnimation都是键-值编码兼容的容器类,允许你修改属性键对应的值。即使键为“someKey”对应的属性没有被定义,你也可以给“someKey”的键设置一个值,如下:
  [theLayer setValue:[NSNumber numberWithInteger:50] forKey:@"someKey"];
  你可以通过下面的代码检索“someKey”对应的值:
  someKeyValue=[theLayer valueForKey:@"someKey"];
    
  Mac OS X 注意:在Mac OS X上面,CALayer和CAAnimation类支持NSCoding协议,会自动归档这些你设置的额外键。
1.2 支持默认值
  核心动画添加的键值编码约定,允许一个类在被使用时键没有被设置相应值的时候提供默认值。CALayer或CAAnimation支持该约定,通过使用方法defaultValueForKey:。
  为了给键提供默认值,你创建相应的子类,并重载defaultValueForKey:。子类实现相应的键参数检查并返回适当的默认值。清单1描述了一个实现defaultValueForKey:的例子,它给masksToBounds提供新的默认值。
  Listing 1  Example implementation of defaultValueForKey:
  + (id)defaultValueForKey:(NSString *)key{
    if ([key isEqualToString:@"masksToBounds"])
         return [NSNumber numberWithBool:YES];
    return [super defaultValueForKey:key];
  }
 
1.3 封装约定
  当使用键值编码方法访问属性,而属性的值不支持标准键-值编码封装约定的对象(NSObject)时候,你可以使用如下的封装约定:
  CGPoint
    NSValue
  CGSize
    NSValue
  CGRect
    NSValue
  CGAffineTransform
    NSAffineTransform (Mac OS X only)
  CATransform3D
    NSValue
1.4 支持结构字段的关键路径
  CAAnimation提供支持使用关键路径访问选择的结构字段。这在为动画关键路径指定结构字段的时候非常有帮助,同时你可以使用setValue:forKeyPath:和valueForKeyPath来设置和读取相应的值。
  CATransform3D公开如下的字段:
  rotation.x
    The rotation, in radians, in the x axis.
  rotation.y
    The rotation, in radians, in the y axis.
  rotation.z
    The rotation, in radians, in the z axis.
  rotation
    The rotation, in radians, in the z axis. This is identical to setting the rotation.z field.
  scale.x
    Scale factor for the x axis.
  scale.y
    Scale factor for the y axis.
  scale.z
    Scale factor for the z axis.
  scale
    Average of all three scale factors.
  translation.x
    Translate in the x axis.
  translation.y
    Translate in the y axis.
  translation.z
    Translate in the z axis.
  translation
    Translate in the x and y axis. Value is an NSSize or CGSize.
  
  CGPoint公开如下字段:
  x
    The x component of the point.
  y
    The y component of the point.
  CGSize公开如下字段:
  width
    The width component of the size.
  height
    The height component of the size.
  CGRect公开如下字段:
  origin
    The origin of the rectangle as a CGPoint.
  origin.x
    The x component of the rectangle origin.
  origin.y
    The y component of the rectangle origin.
  size
    The size of the rectangle as a CGSize.
  size.width
    The width component of the rectangle size.
  size.height
    The height component of the rectangle size.
  你不可以通过Objective-C 2.0的属性方法来指定一个结构字段的关键路径。如下的代码是无法正常执行的:
  myLayer.transform.rotation.x=0;
  相反你必须使用setValue:forKeyPath:或者valuForKeyPath:,如下:
  [myLayer setValue:[NSNumber numberWithInt:0] forKeyPath:@"transform.rotation.x"];

转自梦维:http://www.dreamingwish.com/dream-2012/coreanimation-programming-guide-10-kvc.html

CoreAnimation编程指南(十)KVC相关推荐

  1. CoreAnimation编程指南(六)动画 转自:http://www.dreamingwish.com/

    http://www.dreamingwish.com/dream-2012/coreanimation-programming-guide-f-animation.html 动画是当今用户界面的关键 ...

  2. CoreAnimation编程指南(九)图层布局

    NSView提供了经典的"stuts and springs"模式,用于视图调整大小的时候把关联到它父图层的视图重新调整位置.图层支持该模式,而且Mac OS X上面的核心动画提供 ...

  3. CoreAnimation编程指南(六)动画

        动画是当今用户界面的关键因素.当使用核心动画的时候,动画是自动完成的.没有动画的循环和计数器.你的应用程序不负负责重绘,也不负责跟踪动画的当前状态.动画在独立线程里面自动执行,没有和你的应用程 ...

  4. CoreAnimation编程指南(简介)

    一.核心动画编程介绍    1.本文档介绍了在使用核心动画时所涉及的基本概念.核心动画的是Objective – C的框架,它通过简单的动画编程接口来提供一套高性能的动画引擎.    2.你应该阅读此 ...

  5. CoreAnimation编程指南(简介)转自:http://www.dreamingwish.com/

    核心动画编程介绍 本文档介绍了在使用核心动画时所涉及的基本概念.核心动画的是Objective – C的框架,它通过简单的动画编程接口来提供一套高性能的动画引擎. 你应该阅读此文档来理解Cocoa应用 ...

  6. iOS之有关动画的总结/CoreAnimation编程指南、简单动画实例

    facebook的动画框架pop:https://github.com/facebook/pop or 核心动画类有以下分类: 提供显示内容的图层类. 动画和计时类. 布局和约束类. 事务类,在原子更 ...

  7. CoreAnimation编程指南(一)概念

    一.概述 1.核心动画是一套包含图形绘制,投影,动画的Objective–C类集合.它通过开发人员所熟悉的应用程序套件和Cocoa Touch视图架构的抽象分层模式,同时使用先进的合作效果提供了一套流 ...

  8. c#编程指南(十二) 平台调用P-INVOKE完全掌握, 结构体边界对齐和内存布局

    在使用结构体指针,进行C#和C++的互相调用.边界对齐是一个大问题,因为边界对齐问题,结构体的成员并不是顺序在内存一个挨着一个的排序. 而且在C++中可以使用#pragma pack(n)改变边界对齐 ...

  9. CoreAnimation编程指南(八)事务

    图层的每个改变都是事务的一部分.CATransaction是核心动画类,它负责成批的把多个图层树的修改作为一个原子更新到渲染树. 本章介绍了核心动画支持的两种事务.隐式事务和显式事务.   1.1 隐 ...

最新文章

  1. golang中的mysql类型对应
  2. C++中的const
  3. Python列表之for循环应用
  4. qt4 与php 通讯,Qt与外部程序通信问题
  5. doT js 宏的使用
  6. Kafka日志清理之Log Deletion
  7. uboot中变量env(收集)
  8. u3d游戏开发视频潭州_游戏美术行业的发展与应用人工智能学院专业介绍及未来前景系列报告会二...
  9. 【Text_classification】 PaddlePaddle框架下出错调整到运行的实验和记录
  10. 最全多线程经典面试题和答案
  11. 转载-----Java Longest Palindromic Substring(最长回文字符串)
  12. Android 系统(264)---android进阶——自定义View
  13. C++杜绝“野指针”
  14. java电池soc算法实现,BMS算法设计之电池SOC介绍(一)
  15. 【u009】瑞瑞的木板
  16. 解决springboot启动失败问题:Unable to start embedded container;
  17. 【黑客免杀攻防】读书笔记15 - 源码免杀、C++壳的编写
  18. 三菱plcfx5u指令手册_可编程控制器FX5U-64MT/ESSLMP篇手册三菱FX5U-64MT/ES用户手册 - 广州凌控...
  19. LTE-LAA中的LBT详解
  20. 修改KindEditor上传图片数量和大小

热门文章

  1. WCF进阶:将编码后的字节流压缩传输
  2. 数据库设计-规范化规则
  3. 三极管稳压管组成的线性电源关键理解
  4. exit(0)和exit(1)区别
  5. 解决PendingIntent传递参数为空的问题
  6. C++有符号和无符号数的转换
  7. 【转】使用Auto Layout中的VFL(Visual format language)--代码实现自动布局
  8. 用javascript生成指定范围的随机数
  9. 300+Jquery, CSS, MooTools 和 JS的导航菜单资源
  10. 分布式——ACID原则 CAP理论