iOS鏈式創建UI終結者 ? PPMaker
做iOS開發,創建UI控制項,必須的不說,還多,尤其你新入手一個項目。
我自己寫代碼,向來想省事:怎麼能不一個一個屬性寫?帶著這個問題,我剛開始創建了各種Tool來處理,後來用Category(證據在此),可Category有個煩人的問題:有些屬性我不需要但是方法參數有,而有些屬性我需要方法參數沒有。 昨天,看到臧成威的如何利用Objective-C寫一個精美的DSL,唉,挺好,就想著優化下自己的,於是就有了PPMaker.在此,獻上對臧老師的感謝。
PPMaker的不同(優點)
? 鏈式調用,代碼簡潔;
? 點語法後面有提示(Masonry是沒有的 );
? 不需要終結詞 (臧老師給的示例有);
? 不需要助詞 (如Masonry中的with),這個也可以說是一個缺點吧;
? pod可根據需求隨意選擇。
? 不需要的屬性,根本不用管 (主要對比Category);
PPMaker的用法
- 第一步、導入PPMaker
- 方法一、使用CocoaPods安裝
pod PPMaker, ~> 0.0.22
- 方法二、手動下載拖入
2. 第二步、用對應的類( 如:UILable )直接調用 pp_
如下創建一個簡單的UILabel對象:
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
結語
chinesemanbobo/PPMaker
PPMaker是自己寫的最滿意的一個庫,解決了自己一直以來創建UI、配置attributedText的苦惱,這其中也參考了一些大神的的blog和開源庫,在此,再次表示感謝。今天,分享自己的這個庫,希望幫助像我一樣的同學,其次,希望覺得好的,給個star.
當然了,這個庫,我會持續更新的,有什麼問題,歡迎提出來。或者誰有更好的做法,熱烈歡迎告知一下,深表謝意!
推薦閱讀: