聲明:PPMaker
跟Masonry
功能上是完全不同的庫(kù)梦重,PPMaker
是快速便捷創(chuàng)建UI/attributedText
等的兑燥,而Masonry
是布局的。
做iOS開(kāi)發(fā)琴拧,創(chuàng)建UI控件降瞳,必須的不說(shuō),還多蚓胸,尤其你新入手一個(gè)項(xiàng)目挣饥。
我自己寫(xiě)代碼,向來(lái)想省事:怎么能不一個(gè)一個(gè)屬性寫(xiě)赢织?帶著這個(gè)問(wèn)題亮靴,我剛開(kāi)始創(chuàng)建了各種Tool來(lái)處理,后來(lái)用Category(證據(jù)在此)于置,可Category有個(gè)煩人的問(wèn)題:有些屬性我不需要但是方法參數(shù)有茧吊,而有些屬性我需要方法參數(shù)沒(méi)有。
昨天八毯,看到臧成威的如何利用Objective-C寫(xiě)一個(gè)精美的DSL,唉搓侄,挺好,就想著優(yōu)化下自己的话速,于是就有了 PPMaker.
在此讶踪,獻(xiàn)上對(duì)臧老師的感謝。
PPMaker的不同(優(yōu)點(diǎn))
? 鏈?zhǔn)秸{(diào)用泊交,代碼簡(jiǎn)潔乳讥;
? 點(diǎn)語(yǔ)法后面有提示(Masonry是沒(méi)有的 )
;
? 不需要終結(jié)詞 臧老師給的示例有
廓俭;
? 不需要助詞 如Masonry中的with
云石,這個(gè)也可以說(shuō)是一個(gè)缺點(diǎn)吧;
? pod可根據(jù)需求隨意選擇研乒。
? 不需要的屬性汹忠,根本不用管
主要對(duì)比Category
;
PPMaker的用法
第一步、導(dǎo)入PPMaker
方法一、使用CocoaPods安裝
pod 'PPMaker', '~> 0.0.22'
方法二宽菜、手動(dòng)下載拖入
第二步谣膳、用對(duì)應(yīng)的類如:UILable
直接調(diào)用pp_
如下創(chuàng)建一個(gè)簡(jiǎn)單的UILabel對(duì)象:
maker調(diào)用,直接調(diào)UILabel對(duì)象的屬性铅乡,如
text
继谚、textColor
、frame
等隆判,當(dāng)然也有自定義的犬庇,如intoView
表示要加到哪個(gè)view上、fontSize
實(shí)際上[UIFont systemFontOfSize:fontSize]
的簡(jiǎn)化等等侨嘀。總之臭挽,PPMaker is very easy to use.
創(chuàng)建UI控件的路程
起初:一個(gè)屬性一個(gè)屬性賦值
UILabel *lb = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, 300, 50)];
[self.view addSubview:lb];
lb.backgroundColor = [UIColor whiteColor];
lb.text = @"我是一個(gè)lb";
lb.textColor = [UIColor blueColor];
lb.textAlignment = NSTextAlignmentCenter;
lb.font = [UIFont systemFontOfSize:18];
后來(lái):用Category快速創(chuàng)建
@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
現(xiàn)在:鏈?zhǔn)秸{(diào)用的 DSL
結(jié)語(yǔ)
PPMaker是自己寫(xiě)的最滿意的一個(gè)庫(kù),解決了自己一直以來(lái)創(chuàng)建UI咬腕、配置attributedText的苦惱欢峰,這其中也參考了一些大神的的blog和開(kāi)源庫(kù),在此涨共,再次表示感謝纽帖。今天,分享自己的這個(gè)庫(kù)举反,希望幫助像我一樣的同學(xué)懊直,其次,希望覺(jué)得好的火鼻,給個(gè)star.
當(dāng)然了室囊,這個(gè)庫(kù),我會(huì)持續(xù)更新的魁索,有什么問(wèn)題融撞,歡迎提出來(lái)〈治担或者誰(shuí)有更好的做法尝偎,熱烈歡迎告知一下,深表謝意鹏控!