Featured image of post iOS链式创建UI终结者 ➜ PPMaker

iOS链式创建UI终结者 ➜ PPMaker

PPMaker是什么❓

声明:PPMakerMasonry功能上是完全不同的库,PPMaker是快速便捷创建UI/attributedText等的,而Masonry是布局的。

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

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

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

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

PPMaker的不同(优点)

①、链式调用,代码简洁

特别字符统一处理

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

PPMaker有提示

Masonry没提示

③、不需要终结词,臧老师给的示例有

④、不需要助词 (如Masonry中的with),这个也可以说是一个缺点吧

⑤、pod可根据需求随意选择

模块可独立使用

⑥、不需要的属性,根本不用管 主要对比Category

PPMaker的用法

第一步、导入PPMaker

  • 方法一、使用CocoaPods安装
1
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
2
3
4
5
6
7
    UILabel *lb = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 300, 50)];
    [self.view addSubview:lb];
    lb.backgroundColor = [UIColor whiteColor];
    lb.text = @"我是一个lb";
    lb.textColor = [UIColor blueColor];
    lb.textAlignment = NSTextAlignmentCenter;
    lb.font = [UIFont systemFontOfSize:18];

后来:用Category快速创建

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@interface UILabel (EasyMake)
+(UILabel *)lbMakeWithSuperV:(UIView *)superV
                       frame:(CGRect)frame
                        font:(UIFont *)font
                   alignment:(NSTextAlignment)alignment
                        text:(NSString *)text
                   textColor:(UIColor *)textColor;


@implementation UILabel (EasyMake)
+(UILabel *)lbMakeWithSuperV:(UIView *)superV
                       frame:(CGRect)frame
                        font:(UIFont *)font
                   alignment:(NSTextAlignment)alignment
                        text:(NSString *)text
                   textColor:(UIColor *)textColor
{
    UILabel *lb = [[UILabel alloc]init];
    if (superV) {
        [superV addSubview:lb];
    }
    if (font) {
        lb.font = font;
    }
    if (text) {
        lb.text = text;
    }
    if (textColor) {
        lb.textColor = textColor;
    }
    lb.frame = frame;
    lb.textAlignment = alignment;
    return lb;
}
@end

现在:链式调用的DSL

结语

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

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

Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计