美文网首页
实用工厂模式+链式编程 快速生成UI控件 iOS

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

作者: ztlight000 | 来源:发表于2018-04-05 22:08 被阅读199次

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

    相关文章

      网友评论

          本文标题:实用工厂模式+链式编程 快速生成UI控件 iOS

          本文链接:https://www.haomeiwen.com/subject/oyhlhftx.html