iOS--链式编程
来源:互联网 发布:新浪网络经纪人 编辑:程序博客网 时间:2024/05/01 13:46
相信用过masonry的童鞋,一定被它的魅力折服,真的很好用啊。masnory是用链式编程的思想来写的,用起来一个个block用点连接起来,即省代码又美观,巴特,链式编程是怎么样实现的嘞。。。不用着急,且往下看。
讲链式编程,不得不讲oc中的点语法,.XX是getter,.XX = XXX;是setter,显然链式编程是一串的,所以我们应该想到讲block声明为属性,并且在这些block属性的getter方法中做一些事情。哈哈,是不是简单易懂,巴特,如何去具体的实现链式编程呢,别急,这儿有我写的一个小demo,看了希望你对链式编程能理解。。
Demo在这儿https://github.com/JLHuu/LinkProgramDemo.git
其实,链式编程理解起来并不难,一个是讲block声明为属性,另一个是要注意block一定要有返回值。
废话不多说,贴点代码
这儿是我在vc中写的一段代码
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self.view addSubview:[MyLabel labelinitWith:^(MyLabel *la){ la.labelframe(CGRectMake(100, 100, 200, 200)).labackgroundcolor([UIColor redColor]).lacornerradius(30).lastring(@"是不是感觉masnory用起来屌屌的,这是一个链式编程的简单实现,希望对你理解链式编程有所帮助~~~~",[UIColor greenColor],15.f); }]];}效果呢,是这样的
一段代码,就实现了效果。。在看一下Mylabel中的实现代码
.h
#import <UIKit/UIKit.h>@interface MyLabel : UILabel@property(nonatomic,copy)MyLabel *(^labelframe)(CGRect frame);@property(nonatomic,copy)MyLabel *(^lacornerradius)(CGFloat cornerradius);@property(nonatomic,copy)MyLabel *(^labackgroundcolor)(UIColor *backgroundcolor);@property(nonatomic,copy)MyLabel *(^lastring)(NSString *str,UIColor *strcolor,CGFloat fontsize);// 写了一个类方法来创建实例+(instancetype)labelinitWith:(void (^)(MyLabel *la)) initblock;@end.m
#import "MyLabel.h"@implementation MyLabel+(instancetype)labelinitWith:(void (^)(MyLabel *))initblock{ MyLabel *la = [[MyLabel alloc] init]; if (initblock) { initblock(la); } return la;}-(MyLabel *(^)(CGRect))labelframe{ return ^MyLabel *(CGRect rect){ self.frame = rect; return self; };}-(MyLabel *(^)(UIColor *))labackgroundcolor{ return ^MyLabel *(UIColor *color){ self.backgroundColor = color; return self; };}-(MyLabel *(^)(CGFloat))lacornerradius{ return ^MyLabel *(CGFloat a){ self.layer.cornerRadius = a; self.layer.masksToBounds = YES; return self; };}-(MyLabel *(^)(NSString *, UIColor * ,CGFloat))lastring{ return ^MyLabel *(NSString *str ,UIColor *color,CGFloat fontsize){ self.text = str; self.textColor = color; self.font = [UIFont systemFontOfSize:fontsize]; self.numberOfLines = 0; self.textAlignment = NSTextAlignmentCenter; return self; };}@end
OK,这样就实现了用链式编程法实现了一个自定义的标签了。
1 0
- iOS 链式编程思想
- iOS--链式编程
- iOS中的链式编程
- iOS链式编程
- iOS-链式编程
- iOS 链式编程
- iOS链式编程
- iOS 链式编程(Masonry)
- iOS 链式编程/函数式编程写法
- iOS 链式编程与函数式编程
- iOS-OC创建链式语法(链式编程)
- iOS链式编程框架介绍之LinkBlock
- IOS学习笔记2-NSThread,链式编程
- 第四十三篇:iOS链式编程Block
- iOS中的函数式编程和链式编程
- iOS中函数式编程和链式编程的应用
- 链式编程
- 链式编程
- $smarty->display('index2.tpl');
- 利用HTML5新特性localstorage把用户数据暂时存储在客户端,用于之后上传
- 聊天
- web前端2016-3-5
- 世界末日
- iOS--链式编程
- 移动文件导致报错
- Activity的生命周期(四)——多个Activity相互交互的生命周期
- 【周练3016.3.5】老王修马路(一)(水)
- VS2013使用EF6与mysql数据库
- 设置元素等待
- Git本地命令行操作常用命令
- Python的单引号、双引号和三引号的字符串
- An ant's story