CC论坛

 找回密码
 立即注册
查看: 545|回复: 0

[通用] CM文件(.cm)规范及编写教程

[复制链接]

56

主题

57

帖子

333

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
333
发表于 2020-3-10 19:12:41 | 显示全部楼层 |阅读模式
默认有25个CM文件,可直接使用;如果你想生成特色的代码仍然需要编写自己的CM文件。

CM文件(.cm)大规则:
  • 所有浮点型归为Float类型,非浮点型归为Int; 即基本数据类型只有FloatIntBool.
  • 一个CM文件只能有一个声明.
  • CM文件第一行必须为声明.
  • 注释格式


单行注释
// 单行注释

多行注释
// 多行注释1
// 多行注释2
// 多行注释3

一、Objective-C CM文件(.cm)编写规则
CM文件路径:/Users/xxxxxx/CodeMixer/BaseClass/OC
自己编写的CM文件需要放到此路径中
1、结构体(Struct)
声明语法
#struct#名称##框架或引用文件
注册创建实例方法(或静态属性)语法
##m2#方法名(#0, #1, #2, #3, ...)##第1个参数类型,第2个参数类型,第3个参数类型,第4个参数类型,...
方法参数是从0开始标记,如果没有参数不需要标记

示例

  1. #struct#CGRect##UIKit
  2. ##m2#CGRectMake(#0, #1, #2, #3)##Float,Float,Float,Float
  3. ##m2#CGRectZero
复制代码

2、枚举(Enum)
声明语法
#enum#名称##框架或引用文件
注册成员语法
##e#成员名称
示例

  1. #enum#NSTextAlignment##UIKit
  2. ##e#NSTextAlignmentLeft
  3. ##e#NSTextAlignmentCenter
  4. ##e#NSTextAlignmentRight
  5. ##e#NSTextAlignmentJustified
  6. ##e#NSTextAlignmentNatural
复制代码

3、类(Class)
声明语法
#class#类名##框架或引用文件
注册构造方法语法
##m1#方法名:#0 参数2:#1 参数3:#2, ...##第1个参数类型, 第2个参数类型, 第3个参数类型, ...
方法参数是从0开始标记,如果没有参数不需要标记

注册创建实例的静态方法语法
##m2#方法名:#0 参数2:#1 参数3:#2, ...##第1个参数类型, 第2个参数类型, 第3个参数类型, ...
方法参数是从0开始标记,如果没有参数不需要标记

注册属性语法
##p#属性名##类型
示例

  1. #class#UIView##UIKit
  2. ##m1#initWithFrame:#0##CGRect
  3. ##p#frame##CGRect
  4. ##p#bounds##CGRect
  5. ##p#center##CGPoint
  6. ##p#contentScaleFactor##Float-10.0
  7. ##p#multipleTouchEnabled##Bool
  8. ##p#exclusiveTouch##Bool
  9. ##p#autoresizesSubviews##Bool
  10. ##p#autoresizingMask##UIViewAutoresizing
  11. ##p#clipsToBounds##Bool
  12. ##p#opaque##Bool
  13. ##p#clearsContextBeforeDrawing##Bool
  14. ##p#hidden##Bool
  15. ##p#backgroundColor##UIColor
  16. ##p#alpha##Float-1.0
  17. ##p#contentMode##UIViewContentMode
复制代码
Float-1.0表示动态生成的值在 [0.0, 1.0] 范围内,Float-10.0表示动态生成的值在 [0.0, 10.0] 范围内,Float表示动态生成的值在 [0.0, 600.0] 范围内,同样适用于Int

下载一些OC示例

二、Swift CM文件(.cm)编写规则
CM文件路径:/Users/xxxxxx/CodeMixer/BaseClass/Swift
自己编写的CM文件需要放到此路径中
1、结构体(Struct)
声明语法
#struct#名称##框架
注册创建实例方法(或静态属性)语法
##m2#方法名(#0, #1, #2, #3, ...)##第1个参数类型,第2个参数类型,第3个参数类型,第4个参数类型,...
方法参数是从0开始标记,如果没有参数不需要标记

示例

  1. #struct#CGRect##UIKit
  2. ##m2#CGRect(x: #0, y: #1, width: #2, height: #3)##Float,Float,Float,Float
  3. ##m2#CGRect(x: #0, y: #1, width: #2, height: #3)##Int,Int,Int,Int
  4. ##m2#CGRect.zero
复制代码

2、枚举(Enum)
声明语法
#enum#名称##框架
注册成员语法
##e#成员名称
示例

  1. #enum#NSTextAlignment##UIKit
  2. ##e#left
  3. ##e#center
  4. ##e#right
  5. ##e#justified
  6. ##e#natural
复制代码

3、类(Class)
声明语法
#class#类名##框架
注册构造方法语法
##m1#(参数1:#0, 参数2:#1, 参数3:#2, ...)##第1个参数类型, 第2个参数类型, 第3个参数类型, ...
方法参数是从0开始标记,如果没有参数不需要标记

注册创建实例的静态方法语法
##m2#方法名(参数1:#0, 参数2:#1, 参数3:#2, ...)##第1个参数类型, 第2个参数类型, 第3个参数类型, ...
方法参数是从0开始标记,如果没有参数不需要标记

注册属性语法
##p#属性名##类型
示例

  1. #class#UIView##UIKit
  2. ##m1#(frame: #0)##CGRect
  3. ##p#frame##CGRect
  4. ##p#bounds##CGRect
  5. ##p#center##CGPoint
  6. ##p#contentScaleFactor##Float-10.0
  7. ##p#isMultipleTouchEnabled##Bool
  8. ##p#isExclusiveTouch##Bool
  9. ##p#autoresizesSubviews##Bool
  10. ##p#autoresizingMask##UIView.AutoresizingMask
  11. ##p#clipsToBounds##Bool
  12. ##p#isOpaque##Bool
  13. ##p#clearsContextBeforeDrawing##Bool
  14. ##p#isHidden##Bool
  15. ##p#backgroundColor##UIColor
  16. ##p#alpha##Float-1.0
  17. ##p#contentMode##UIView.ContentMode
复制代码
Float-1.0表示动态生成的值在 [0.0, 1.0] 范围内,Float-10.0表示动态生成的值在 [0.0, 10.0] 范围内,Float表示动态生成的值在 [0.0, 600.0] 范围内,同样适用于Int

下载一些Swift示例

三、测试CM文件(.cm)编写正确性
1、编写好的CM文件放到指定路径
OC:/Users/xxxxxx/CodeMixer/BaseClass/OC
Swift: /Users/xxxxxx/CodeMixer/BaseClass/Swift
2、 打开 CodeMixer 进入CM文件测试功能( CodeMixer 3 Beta3+)



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|粤ICP备19105948号|CC论坛

GMT+8, 2021-10-29 04:59

快速回复 返回顶部 返回列表