实用工厂模式+链式编程 快速生成UI控件 iOS

2018-04-05  本文已影响199人  ztlight000

承接上一篇说的链式编程,上一篇:实用链式编程演示,这里我们补充一个链式编程正式的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控件了,希望对大家有帮助。

上一篇下一篇

猜你喜欢

热点阅读