实用工厂模式+链式编程 快速生成UI控件 iOS
承接上一篇说的链式编程,上一篇:实用链式编程演示,这里我们补充一个链式编程正式的Demo,可以直接拖到项目中使用,github下载地址为:ControlFactory
一、出发点
写这个工具类的出发点是平时我们创建一个UI控件的时候,往往需要写很多代码去设置各个属性,比如创建一个button,要设置Text、Frame、BackgroundImage、点击事件等等,BackgroundImag还要设置状态,浪费很多时间,这里我们通过工厂模式快速生成常用的控件。
二、代码说明
工厂类ControlFactory中初始化UI控件
+ (UIView*)view;
+ (UIButton*)button;
+ (UILabel*)label;
+ (UIImageView*)imageView;
+ (UITextView*)textView;
+ (UITextField*)textField;
+ (UIScrollView*)scrollView;
+ (UIWebView*)webView;
+ (UIPageControl*)pageControl;
装饰类中我们以button为例,可以进行以下设置
//设置frame
- (UIButton*(^)(CGRectframe))buttonFrame;
// 设置背景色
- (UIButton*(^)(UIColor*color))buttonBackgroundColor;
//设置text
- (UIButton*(^)(NSString*text))buttonText;
//设置字体
- (UIButton*(^)(UIFont*textFont))buttonFont;
//设置背景图片
- (UIButton*(^)(NSString*imageName))buttonBGimage;
//设置normalImage
- (UIButton*(^)(NSString*normalImageName))normalImageName;
//设置高亮状态的图片
- (UIButton*(^)(NSString*highlightImageName))highlightImageName;
//设置选中的图片
- (UIButton*(^)(NSString*selectImageName))selectImageName;
//设置普通的title的颜色
- (UIButton*(^)(UIColor*normalTitleColor))normalTitleColor;
//设置选中的title的颜色
- (UIButton*(^)(UIColor*selectTitleColor))selectTitleColor;
//target action
- (UIButton*(^)(idtarget,SELsel))targetAction;
// 设置圆角
- (UIButton*(^)(CGFloatradius))buttonCornerRadius;
// 设置圆角边线的颜色
- (UIButton*(^)(UIColor*color))buttonCornerColor;
// 设置圆角边线的宽度
- (UIButton*(^)(CGFloatwidth))buttonCornerWidth;
实现方式如下形式:
- (UIButton*(^)(NSString*text))buttonText {
UIButton*(^buttonBlock)(NSString*text) = ^(NSString*text) {
[self setTitle:text forState:UIControlStateNormal];
return self;
};
returnbuttonBlock;
}
三、使用方式
UIButton *btn = [ControlFactory button];
btn.buttonText(@"hello world").buttonFont([UIFont systemFontOfSize:12]).buttonFrame(CGRectZero);
[self.viewaddSubview:btn];
这样就可以快速处理UI控件了,希望对大家有帮助。