美文网首页
链式编程的简单使用

链式编程的简单使用

作者: 捷风 | 来源:发表于2017-08-04 14:39 被阅读47次

砖搬久了,慢慢会发现很多时间总会在做些重复的事情,这个时候我们就会习惯性的去考虑怎么去省事,这也是我之所以突然想到用链式编程的原因,废话不多说,先举个例子,以初始化一个UIButton为例来看看链式编程的效果:


链式编程.png

1、普通方案

    UIButton *button =[UIButton buttonWithType:UIButtonTypeCustom];
    button.frame=CGRectMake(0, 0, 105, 30);
    [button setBackgroundColor:RGB(255,255,255) forState:UIControlStateNormal];
    [button setTitle:@"title" forState:UIControlStateNormal];
    [button setImage:[UIImage imageNamed:@"drop_up"] forState:UIControlStateNormal];
    [button setImage:[UIImage imageNamed:@"drop_down"] forState:UIControlStateSelected];
    [button setTitleColor:RGB(51,51,51) forState:UIControlStateNormal];
    [button setTitleColor:RGB(51,51,51) forState:UIControlStateSelected];
    button.titleLabel.font=[UIFont systemFontOfSize:14];

2、链式编程方案

UIButton *button =[UIButton buttonWithType:UIButtonTypeCustom];
   button.normalTitleColor(RGB(51,51,51)).selectedTitleColor(RGB(51,51,51)).normalBackgroundColor(RGB(255,255,255)).selectedBackgroundColor(RGB(255,255,255)).normalImage(@"drop_up").selectedImage(@"drop_down").normalTitle(@"title");

总结:
个人觉得第二种方案在实际开发中使用会比第一种稍微便捷一点,每次设置对应属性的时候直接使用点语法就可以了,而且还可以一直往后面点,也可以分开单个使用点语法,不需要每次去调用系统UIButton的set方法,而且还要去输入当前的状态,
以上为个人意见不喜勿碰,谢谢!

👇接下来看看封装的代码的真面目吧--------

创建一个UIButton的类别,下面附上.h、.m文件中实现代码,感兴趣的可以参照我写的几个拓展出更多来,如果有更简便的方案欢迎联系我一起沟通学习 🤝🤝

UIButton+Button.h
#import <UIKit/UIKit.h>

@interface UIButton (Button)
/**
 字体大小
 */
-(UIButton *(^)(CGFloat ))butTexFont;
/**
 默认文字
 */
-(UIButton *(^)(NSString *))normalTitle;
/**
 点击文字
 */
-(UIButton *(^)(NSString *))selectedTitle;
/**
 默认背景颜色
 */
-(UIButton *(^)(UIColor *))normalBackgroundColor;
/**
 点击背景颜色
 */
-(UIButton *(^)(UIColor *))selectedBackgroundColor;
/**
 默认文字颜色
 */
-(UIButton *(^)(UIColor *))normalTitleColor;
/**
 点击文字颜色
 */
-(UIButton *(^)(UIColor *))selectedTitleColor;

/**
 默认image
 */
-(UIButton *(^)(NSString *))normalImage;
/**
 点击image
 */
-(UIButton *(^)(NSString *))selectedImage;
@end
UIButton+Button.m

#import "UIButton+Button.h"

@implementation UIButton (Button)
#pragma mark -- 字体大小
-(UIButton *(^)(CGFloat))butTexFont
{
    return ^id(CGFloat butTexFont)
    {
        self.titleLabel.font=[UIFont systemFontOfSize:butTexFont];
        return self;
    };
}
#pragma mark --默认文字
-(UIButton *(^)(NSString *))normalTitle{
    return ^id(NSString * normalTitle){
        [self setTitle:normalTitle forState:UIControlStateNormal];
        return self;
    };
}
#pragma mark ---点击文字
-(UIButton *(^)(NSString *))selectedTitle{
    return ^id(NSString * selectedTitle){
        [self setTitle:selectedTitle forState:UIControlStateSelected];
        return self;
    };
}
#pragma mark --默认image
-(UIButton *(^)(NSString *))normalImage{
    return ^id(NSString * normalImage){
        [self setImage:[UIImage imageNamed:normalImage] forState:UIControlStateNormal];
        return self;
    };
}
#pragma mark ---点击image
-(UIButton *(^)(NSString *))selectedImage{
    return ^id(NSString * selectedImage){
        [self setImage:[UIImage imageNamed:selectedImage] forState:UIControlStateSelected];
        return self;
    };
}
#pragma mark --默认背景颜色
-(UIButton *(^)(UIColor *))normalBackgroundColor{
    return ^id(UIColor * normalBackgroundColor){
        [self setBackgroundColor:normalBackgroundColor forState:UIControlStateNormal];
        return self;
    };
}
#pragma mark --点击背景颜色
-(UIButton *(^)(UIColor *))selectedBackgroundColor{
    return ^id(UIColor * selectedBackgroundColor){
        [self setBackgroundColor:selectedBackgroundColor forState:UIControlStateSelected];
        return self;
    };
}
#pragma mark ---默认文字颜色
-(UIButton *(^)(UIColor *))normalTitleColor{
    return ^id(UIColor * normalTitleColor){
        [self setTitleColor:normalTitleColor forState:UIControlStateNormal];
        return self;
    };
}
#pragma mark ---点击文字颜色
-(UIButton *(^)(UIColor *))selectedTitleColor{
    return ^id(UIColor * selectedTitleColor){
        [self setTitleColor:selectedTitleColor forState:UIControlStateSelected];
        return self;
    };
}
@end

相关文章

  • iOS 链式编程

    之前看到 Masonry 是使用链式编程,感觉很酷,自己简单的写了一个链式编程的示例! 首先简单的来说一下链式编程...

  • iOS 链式编程简单的使用

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

  • 链式编程的简单使用

    砖搬久了,慢慢会发现很多时间总会在做些重复的事情,这个时候我们就会习惯性的去考虑怎么去省事,这也是我之所以突然想到...

  • 链式编程的简单使用

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

  • iOS 链式编程

    链式编程是OC中一种很好的设计模式。框架中使用链式编程,会让框架使用者感觉写的代码更加美观简洁。 链式编程的效果 ...

  • RxJava学习总结-进程控制

    前言 上一篇文章简单介绍了RxJava的使用,本文将在前文的基础上针对一些细节进行说明。 链式编程 链式编程不是什...

  • 几种编程思想在iOS中的实现:(二)函数式编程

    前期回顾 (一)链式编程 在上一篇文章——(一)链式编程的最后有提到,尽管例子中实现了所谓的链式编程,但是在使用(...

  • 链式编程总结

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

  • OC--链式编程学习(简单封装MBProgressHUD用例)

    学习OC下的链式编程实战 简单实现BBPerson.h BBPerson.m 使用例子 增加一个make方法 使用...

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

    承接上一篇说的链式编程,上一篇:实用链式编程演示,这里我们补充一个链式编程正式的Demo,可以直接拖到项目中使用,...

网友评论

      本文标题:链式编程的简单使用

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