声明:PPMaker
跟Masonry
功能上是完全不同的库,PPMaker
是快速便捷创建UI/attributedText
等的,而Masonry
是布局的。
做iOS开发,创建UI控件,必须的不说,还多,尤其你新入手一个项目。
我自己写代码,向来想省事:怎么能不一个一个属性写?带着这个问题,我刚开始创建了各种Tool来处理,后来用Category(证据在此),可Category有个烦人的问题:有些属性我不需要但是方法参数有,而有些属性我需要方法参数没有。
昨天,看到臧成威的如何利用Objective-C写一个精美的DSL,唉,挺好,就想着优化下自己的,于是就有了 PPMaker.
在此,献上对臧老师的感谢。
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对象的属性,如
text
、textColor
、frame
等,当然也有自定义的,如intoView
表示要加到哪个view上、fontSize
实际上[UIFont systemFontOfSize:fontSize]
的简化等等。总之,PPMaker is very easy to use.
创建UI控件的路程
起初:一个属性一个属性赋值
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快速创建
@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
Snip20180509_11.png Snip20180509_13.png Snip20180509_14.png Snip20180509_15.png结语
PPMaker是自己写的最满意的一个库,解决了自己一直以来创建UI、配置attributedText的苦恼,这其中也参考了一些大神的的blog和开源库,在此,再次表示感谢。今天,分享自己的这个库,希望帮助像我一样的同学,其次,希望觉得好的,给个star.
当然了,这个库,我会持续更新的,有什么问题,欢迎提出来。或者谁有更好的做法,热烈欢迎告知一下,深表谢意!
网友评论
-(PPMake *(^)(UIViewContentMode))contentMode
{
return ^PPMake *(UIViewContentMode cm){
self.creatingV.contentMode = condense;
return self;
};
}
//
self.creatingV.contentMode = condense;//是=cm吧
和sdautolayout相比,有哪些不同呢?
[!] Unable to find a pod with name, author, summary, or description matching `PPMaker`
”
pod --version
1.5.0,应该和这个没关系吧。
我 pod search Masonry都可以找到,再执行
rm ~/Library/Caches/CocoaPods/search_index.json
pod search PPMaker
Creating search index for spec repo 'master'.. Done!
[!] Unable to find a pod with name, author, summary, or description matching `PPMaker`
还是找不到,尴尬!