首页 > 代码库 > 第四十一篇、Masonry利用Block实现链式编程
第四十一篇、Masonry利用Block实现链式编程
一直都觉得使用Masonry的时候语法特别优雅,很早的时候就想尝试下怎么实现,
一直都没弄明白,直到最近看见一篇叫block实现链式编程的
使用实例:
UIButton * btn = [UIButton button].normalTitle(@"普通状态").normalImage([UIImage imageNamed:@"icon_help"]).selectedTitle(@"选中状态");
/// 声明文件@interface UIButton (JQExtension)/// 连接符,没啥实际意义,蛋疼的时候可以无限.set....- (instancetype)set; + (instancetype)button;/// 设置普通状态标题- (UIButton *(^)(NSString *))normalTitle; /// 设置选中状态标题- (UIButton *(^)(NSString *))selectedTitle; /// 设置高亮状态标题- (UIButton *(^)(NSString *))highlightTitle; /// 设置普通状态图片- (UIButton *(^)(UIImage *))normalImage; /// 设置选中状态图片- (UIButton *(^)(UIImage *))selectedImage; /// 设置高亮状态图片- (UIButton *(^)(UIImage *))highlightedImage; /// 设置普通状态背景图片- (UIButton *(^)(UIImage *))normalBackgroundImage; /// 设置高亮状态背景图片- (UIButton *(^)(UIImage *))highlightedBackgroundImage; /// 设置选中状态背景图片- (UIButton *(^)(UIImage *))selectedBackgroundImage; @end 实现文件#import "UIButton+GKExtension.h" @implementation UIButton (GKExtension)- (instancetype)set { return self;} + (instancetype)button { return [self buttonWithType:UIButtonTypeCustom];} - (UIButton *(^)(NSString *))normalTitle { return ^(NSString *title){ [self setTitle:title forState:UIControlStateNormal]; return self; };} - (UIButton *(^)(NSString *))selectedTitle { return ^(NSString *title){ [self setTitle:title forState:UIControlStateNormal]; return self; };} - (UIButton *(^)(NSString *))highlightTitle { return ^(NSString *title){ [self setTitle:title forState:UIControlStateNormal]; return self; };} - (UIButton *(^)(UIImage *))normalImage { return ^(UIImage *image){ [self setImage:image forState:UIControlStateNormal]; return self; };}- (UIButton *(^)(UIImage *))normalBackgroundImage { return ^(UIImage *image){ [self setBackgroundImage:image forState:UIControlStateNormal]; return self; };}- (UIButton *(^)(UIImage *))selectedImage { return ^(UIImage *image){ [self setImage:image forState:UIControlStateSelected]; return self; };} - (UIButton *(^)(UIImage *))selectedBackgroundImage { return ^(UIImage *image){ [self setBackgroundImage:image forState:UIControlStateSelected]; return self; };} - (UIButton *(^)(UIImage *))highlightedImage { return ^(UIImage *image){ [self setImage:image forState:UIControlStateHighlighted]; return self; };} - (UIButton *(^)(UIImage *))highlightedBackgroundImage { return ^(UIImage *image){ [self setBackgroundImage:image forState:UIControlStateHighlighted]; return self; };}
第四十一篇、Masonry利用Block实现链式编程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。