XRCategory 1.0.1

XRCategory 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新版本2016年4月

codingZero 维护。



一个强大的分类,使开发变得简单

一个强大的分类,让开发更简单


功能

以前你可能这样写代码

现在你可以这样写代码

甚至这样写代码

如何使用

将 XRCategory 文件夹中所有文件添加到项目中,导入主头文件 XRCategory.h 即可。

命名规范

大部分命名与系统相同,因此使用起来非常方便。为了避免与系统的完全重名,采用以下方式来区分:

1.名称过短无法缩写时,采用首字母大写的方式

例如,view 的 frame,这里使用 Frame,xx.Frame(CGRect),label 的 text,使用 Text,imageView 的 image,使用 Image。

2.名称过长时采用缩写的方式

例如,scrollview 设置是否显示垂直滚动条,系统的是 showsVerticalScrollIndicator,这里用的是 showVIndicator,基本上前面几个字母都与系统的一致,查找方便。

3.坐标尺寸相关方法的扩充

例如,原方法 Frame(CGRect frame):直接传 frame。

扩展方法 frameEle(CGFloat x, CGFloat y, CGFloat width, CGFloat height) 传递 x、y、width、height。

Ele 是 element 的缩写,即元素的意思,类似的还有 Bounds、boundsEle、Center、CenterEle、origin、originEle、size、sizeEle

也可以直接对单个元素赋值 view.x(0).height(20).centerY(10)

4.参数的顺序也与系统的一致

例如,addTarget:action:forControlEvents:的参数依次为 target、action、controlEvent,这里封装的方法参数顺序也是这样的 btn.addTarget(target、action、controlEvent)

总的来说,使用起来就跟使用系统的差不多,系统的叫啥,用的时候就直接敲啥,然后看自动提示,返回值类型为 block 的是封装好的方法。

关于点语法

并不是所有的方法都可以一直.下去,有两种情况是不能继续点的:

1.调用父类方法后不能继续.自己的方法

例如以下代码就是错误的

frameEle是其父类UIView的方法,所以frameEle()这个block的返回值是UIView,而UIView没有setTitleForState这个方法。

子类方法之后可以继续调用父类方法,但是父类方法之后不能继续调用子类方法,当然父类方法之后可以继续调用父类方法。

2.当block返回值不是方法调用者时不能继续。

比如以下代码就是错误的。

titleForState方法是用来获取按钮某个状态下的标题的,它的返回值类型是NSString,并不是按钮本身,所以不能继续。

一般用来赋值的都会返回调用者本身,可以继续点,用来取值的则返回你要取的值,不能继续往下点。上图的例子返回值是NSString,虽然不能继续点button的方法,但是可以继续点string的方法

注意事项:

1.代码有中文:

如果代码中带有中文字符串,后面就会没有自动提示,点不出来,所以尽量将有中文的代码放在后面,类似这样。

2.不可变类:

NSString、NSArray、NSSet这几个不可变类,其block的返回值大多是它们本身,所以使用时尽量不要连着点。 NSMutableString、NSMutableArray、NSMutableDictionary不存在这个问题

3.提供了直接访问frame相关结构体成员的方法:

鉴于很多开发者会在项目中创建一个分类,用来直接获取视图的坐标和尺寸,比如view.x、view.width,这样一来就会与该分类中的属性重名,于是就直接提供了这样的属性,不过全部采用首字母大写的方式用以区分,比如view.X、view.Width、view.CenterY

赋值使用view.x(10)、view.width(100),取值使用view.X、view.Width

用了这个分类,就不需要额外再写分类来直接获取视图的坐标和尺寸了

结束语:

由于精力有限,目前只对以下类的常用属性及方法做了封装

UIView、UIButton、UILabel

UITextField、UITextView、UIImageView

UIScrollView、UITableView

NSString、NSArray、NSDictionary

NSMutableString、NSMutableArray、NSMutableDictionary

以后会不定期的添加一些新的属性和方法以及一些其他的类。