[关闭]
@chinese-ppmt 2018-05-09T09:40:33.000000Z 字数 1738 阅读 1380

iOS链式创建UI终结者 ➜ PPMaker

iOS


做iOS开发,创建UI控件,必须的不说,还多,尤其你新入手一个项目。

我自己写代码,向来想省事:怎么能不一个一个属性写?带着这个问题,我刚开始创建了各种Tool来处理,后来用Category证据在此),可Category有个烦人的问题:有些属性我不需要但是方法参数有,而有些属性我需要方法参数没有

昨天,看到臧成威如何利用Objective-C写一个精美的DSL,唉,挺好,就想着优化下自己的,于是就有了 PPMaker.

在此,献上对臧老师的感谢。

PPMaker的不同(优点)

➊ 链式调用,代码简洁;

特别字符统一处理

➋ 点语法后面有提示(Masonry是没有的 )

PPMaker有提示

Masonry没提示

➌ 不需要终结词 臧老师给的示例有
➍ 不需要助词 如Masonry中的with,这个也可以说是一个缺点吧;
➎ pod可根据需求随意选择。

模块可独立使用
➏ 不需要的属性,根本不用管 主要对比Category;

PPMaker的用法

第一步、导入PPMaker

方法一、使用CocoaPods安装

pod 'PPMaker', '~> 0.0.22'

方法二、手动下载拖入

第二步、用对应的类如:UILable直接调用pp_

easyToUse_lb

easyToUse_imgV

如下创建一个简单的UILabel对象:
Snip20180509_10.png

maker调用,直接调UILabel对象的属性,如texttextColorframe等,当然也有自定义的,如intoView表示要加到哪个view上、fontSize实际上[UIFont systemFontOfSize:fontSize]的简化等等。

总之,PPMaker is very easy to use.

创建UI控件的路程

起初:一个属性一个属性赋值

  1. UILabel *lb = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 300, 50)];
  2. [self.view addSubview:lb];
  3. lb.backgroundColor = [UIColor whiteColor];
  4. lb.text = @"我是一个lb";
  5. lb.textColor = [UIColor blueColor];
  6. lb.textAlignment = NSTextAlignmentCenter;
  7. lb.font = [UIFont systemFontOfSize:18];

后来:用Category快速创建

  1. @interface UILabel (EasyMake)
  2. +(UILabel *)lbMakeWithSuperV:(UIView *)superV
  3. frame:(CGRect)frame
  4. font:(UIFont *)font
  5. alignment:(NSTextAlignment)alignment
  6. text:(NSString *)text
  7. textColor:(UIColor *)textColor;
  8. @implementation UILabel (EasyMake)
  9. +(UILabel *)lbMakeWithSuperV:(UIView *)superV
  10. frame:(CGRect)frame
  11. font:(UIFont *)font
  12. alignment:(NSTextAlignment)alignment
  13. text:(NSString *)text
  14. textColor:(UIColor *)textColor
  15. {
  16. UILabel *lb = [[UILabel alloc]init];
  17. if (superV) {
  18. [superV addSubview:lb];
  19. }
  20. if (font) {
  21. lb.font = font;
  22. }
  23. if (text) {
  24. lb.text = text;
  25. }
  26. if (textColor) {
  27. lb.textColor = textColor;
  28. }
  29. lb.frame = frame;
  30. lb.textAlignment = alignment;
  31. return lb;
  32. }
  33. @end

现在:链式调用的 DSL

Snip20180509_11.png

Snip20180509_13.png

Snip20180509_14.png

Snip20180509_15.png

结语

PPMaker是自己写的最满意的一个库,解决了自己一直以来创建UI配置attributedText的苦恼,这其中也参考了一些大神的的blog和开源库,在此,再次表示感谢。今天,分享自己的这个库,希望帮助像我一样的同学,其次,希望觉得好的,给个star.

当然了,这个库,我会持续更新的,有什么问题,欢迎提出来。或者谁有更好的做法,热烈欢迎告知一下,深表谢意!

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注