標籤:

iOS鏈式創建UI終結者 ? PPMaker

做iOS開發,創建UI控制項,必須的不說,還多,尤其你新入手一個項目。

我自己寫代碼,向來想省事:怎麼能不一個一個屬性寫?帶著這個問題,我剛開始創建了各種Tool來處理,後來用Category(證據在此),可Category有個煩人的問題:有些屬性我不需要但是方法參數有,而有些屬性我需要方法參數沒有

昨天,看到臧成威的如何利用Objective-C寫一個精美的DSL,唉,挺好,就想著優化下自己的,於是就有了PPMaker.

在此,獻上對臧老師的感謝。

PPMaker的不同(優點)

? 鏈式調用,代碼簡潔;

創建attributedText的lb

? 點語法後面有提示(Masonry是沒有的 );

PPMaker有自動提示

Masonry沒有自動提示

? 不需要終結詞 (臧老師給的示例有)

? 不需要助詞 (如Masonry中的with),這個也可以說是一個缺點吧;

? pod可根據需求隨意選擇。

PPMaker的子模塊可根據需求獨立使用

? 不需要的屬性,根本不用管 (主要對比Category);

PPMaker的用法

  1. 第一步、導入PPMaker
  • 方法一、使用CocoaPods安裝

pod PPMaker, ~> 0.0.22

  • 方法二、手動下載拖入

2. 第二步、用對應的類( 如:UILable 直接調用 pp_

easyToUse_lb

easyToUse_imgV

如下創建一個簡單的UILabel對象:

常規lb的創建

maker調用,直接調UILabel對象的屬性,如 texttextColorframe等,當然也有自定義的,如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

創建一個有多個特別字設置的lb

創建btn

結語

chinesemanbobo/PPMaker?

github.com圖標

PPMaker是自己寫的最滿意的一個庫,解決了自己一直以來創建UI配置attributedText的苦惱,這其中也參考了一些大神的的blog和開源庫,在此,再次表示感謝。今天,分享自己的這個庫,希望幫助像我一樣的同學,其次,希望覺得好的,給個star.

當然了,這個庫,我會持續更新的,有什麼問題,歡迎提出來。或者誰有更好的做法,熱烈歡迎告知一下,深表謝意!


推薦閱讀:

TAG:iOS開發 | iOS |