美文网首页
iOS开发中使用链式编程创建UIButton

iOS开发中使用链式编程创建UIButton

作者: 米米0311 | 来源:发表于2017-05-02 19:23 被阅读0次

具体的代码参见 https://github.com/yanjie311/Chain-coding---primary

链式编程

对于有一定开发经验的人来说链式编程并不陌生,有很多知名的开源库都是采用的这种编程方式,在iOS库中,Masory和Snapkit也是典型的使用链式编程的例子。
大体来说,链式编程就是将多个操作(多行代码)通过某种操作符(通常是点号.)链接成一句的代码.便代码更加紧凑,可读性也更好,降低了代码的重复度.比如以下代码:

//普通方法实现
    [sender setImage:[UIImage imageNamed:@"newcreate_click.png"] forState:UIControlStateNormal];
    sender.imageView.contentMode = UIViewContentModeScaleAspectFit;
    [sender setTitle:@"你好" forState:UIControlStateNormal];
    [sender setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
    sender.titleLabel.textAlignment = NSTextAlignmentCenter;
    [self.view addSubview:sender];
    //链式结构实现
    sender1.ImagePrams(@"newcreate_click.png",1)
    .TitlePrams(@"你好", 17, [UIColor grayColor], 1)
    .ClickAction(sender1);
    [self.view addSubview:sender1];

通过这个例子读者应该可以更清楚的了解什么是链式编程风格.简单来说,链式编程风格要有以下特点:

  • 通常是都是调用一个函数来给属性赋值.也就是说,该函数封装了赋值的语句,还可以在里面加入自己的判断和一些逻辑.
  • 该函数必须有一个返回值,通常是它本身.也可以是处理后的数据或者对象.
  • 可以用静态函数作为起始函数,但是后面的全是实例函数.
  • 可以设定一个最终函数,该函数不返回任何对象,用它来完成最后所有操作.

链式编程的利弊

使用链式编程最主要的好处是可以使代码更简洁,写起来一种"爽快"感.设计优秀的链式编程可以大大降低重复的代码,增强逻辑感.不足之处就是对开
发者的业务逻辑能力要求较高,同时因为链式编程都是调用函数,所以有可能会造成过深的函数调用栈.稍微影响性能.

创建按钮

 WYJLinkerButton* sender1 = [WYJLinkerButton creatButton:CGRectMake(100, 100, 100, 100)];
    sender1.ImageEdgInsets(20,0,60,60)
    .TitleEdgInsets(0,63,100,23)
    .ImagePrams(@"newcreate_click.png",1)
    .TitlePrams(@"你好", 17, [UIColor grayColor], 1)
    .ClickAction(sender1);
    [self.view addSubview:sender1];

    WYJLinkerButton* sender2 = [WYJLinkerButton creatButton:CGRectMake(100, 200, 100, 100)];
    sender2.backgroundColor = [UIColor blueColor];    sender2.ImageEdgInsets(0,25,40,40).TitleEdgInsets(45,32,55,25).ImagePrams(@"newcreate_click.png",1).TitlePrams(@"不开心!",16,[UIColor redColor], 1).ClickAction(sender2);
    sender2.jmImagev.layer.cornerRadius = 10;
    sender2.jmImagev.layer.masksToBounds = YES;
    [self.view addSubview:sender2];

    WYJLinkerButton* sender3 = [WYJLinkerButton creatButton:CGRectMake(120, 300, 80, 30)];
    sender3.ImageEdgInsets(0,2.5,25,25)
    .TitleEdgInsets(27,2.5,55,25)
    .ImagePrams(@"newcreate_click.png",1)
    .TitlePrams(@"发微博",16,[UIColor blueColor], 1)
    .ClickAction(sender3);
    [self.view addSubview:sender3];

简单举例(给按钮添加label)

  • .h文件中的属性写法
** Title的参数值,“(title, fountSize, textColor)” */
@property(nonatomic,copy)
WYJLinkerButton* (^TitlePrams)(NSString* title,NSInteger fountSize,UIColor*textColor, NSTextAlignment textAlignment);
  • .m文件中的实现
- (WYJLinkerButton *(^)(NSString *, NSInteger, UIColor *, NSTextAlignment))TitlePrams {
    return ^WYJLinkerButton* (NSString* title,NSInteger fountSize,UIColor*textColor, NSTextAlignment textAlignment){
        self.jmLabel.text = title;
        self.jmLabel.textColor = textColor;
        self.jmLabel.font = [UIFont systemFontOfSize:fountSize];
        self.jmLabel.textAlignment = textAlignment;
        return self;
    };
}

github上有具体的代码参考,欢迎大家批评指正,谢谢

相关文章

  • iOS开发中使用链式编程创建UIButton

    具体的代码参见 https://github.com/yanjie311/Chain-coding---prima...

  • ReactiveObjC入门

    ReactiveObjC基础用法 iOS开发三种编程方式(响应式编程、函数编程、链式编程),函数编程最常用,链式编...

  • 链式编程的简单使用

    简单使用链式编程来设置UIButton的一些内容: 链式编程调用的点语法,本质也是调用方法,下面方法也可写成btn...

  • 使用链式编程开发iOS

    有一句话叫三人行必有我师,其实作为一个开发者有一个学习的氛围跟一个交流圈子特别重要,这是我的一个iOS交流群686...

  • iOS开发Masonry框架源码解析

    iOS开发Masonry框架源码解析 前言:这个框架编程思想主要包括链式编程 这是一个iOS在控件布局中的轻量级框...

  • 链式编程总结

    链式编程总结 @(iOS) 研究了一下链式编程,但是感觉项目中用处不是很多。 介绍 1.什么时候使用链式编程?在面...

  • iOS链式编程之block作为返回值使用

    链式编程近几年算是一个比较火的概念了,使用过masonry的人应该也比较熟悉链式编程这个概念,那么,在iOS中是怎...

  • iOS中自定义Button按钮

    iOS开发中,经常用到Button,在此我封装了一些方法可以快速使用UIButton,一个方法就可以创建想要效果的...

  • iOS 链式编程简单的使用

    iOS 链式编程简单的使用 链式编程-顾名思义,链式,连贯性为其主要特征,放在编程领域来讲,说简单点就是把一系列的...

  • iOS 链式编程

    链式编程 主要介绍链式编程原理,以及如何创建链式编程 编程范式 在介绍链式编程之前,首先来了解下什么是编程范式。 ...

网友评论

      本文标题:iOS开发中使用链式编程创建UIButton

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