iOS 链式编程(Masonry)
来源:互联网 发布:.手机域名注册局 编辑:程序博客网 时间:2024/05/17 00:13
相信大多数同学都是用过Masonry框架进行布局,他是一个UI布局约束框架;
1、首先Masonry主要用到了Block和链式编程,由于每个View都是可以通过自身实例直接调用,因此可以想到Masonry首先创建了UIView的一个分类“View+MASAdditions.h”;
2、然后创建了一个“MASConstraintMaker.h”来管理相关的约束;
3、约束调用通过
- (NSArray *)mas_makeConstraints:(void(^)(MASConstraintMaker *make))block;
进行调用;采用了block作为参数,并且block携带了一个约束管理者参数;4、布局调用实验使用了链式语法:
[btn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.equalTo(@10);
}];
下面举一个计算的demo说明如何使用链式编程:
为了实现这样一个链式函数操作,我们创建一个基于“NSObject+Hook.h”的分类和“CalcuteManager”类
一、NSObject+Hook.h 方便其它类调用的基类扩展
#import <Foundation/Foundation.h>
#import "CalcuteManager.h"
@interface NSObject (Hook)
- (void)hk_calcute:(void(^)(CalcuteManager *manager))block;
@end
#import "NSObject+Hook.h"
@implementation NSObject (Hook)
- (void)hk_calcute:(void(^)(CalcuteManager *manager))block {
CalcuteManager *manager = [[CalcuteManageralloc]init];
block(manager);
}
二、CalcuteManager.h 计算统计类
#import <Foundation/Foundation.h>
@interface CalcuteManager : NSObject
@property(nonatomic,assign)int result;
- (CalcuteManager *(^)(int num))add;
- (CalcuteManager *(^)(int num))minus;
@end
#import "CalcuteManager.h"
@implementation CalcuteManager
- (CalcuteManager *(^)(int num))add {
return ^(int num){
_result += num;
NSLog(@"add--:%d",_result);
return self;
};
}
- (CalcuteManager *(^)(int num))minus {
return ^(int num) {
_result -= num;
NSLog(@"minus--:%d",_result);
return self;
};
}
@end
- iOS 链式编程(Masonry)
- iOS-OC创建链式语法(链式编程)
- iOS 链式编程思想
- iOS--链式编程
- iOS中的链式编程
- iOS链式编程
- iOS-链式编程
- iOS 链式编程
- iOS链式编程
- iOS利用block实现链式编程方法(Objective-C链式编程)
- Masonry链式编程思想的基本思路以及KVO底层的响应式编程
- iOS 链式编程/函数式编程写法
- iOS 链式编程与函数式编程
- Masonry学习之链式属性
- iOS链式编程框架介绍之LinkBlock
- IOS学习笔记2-NSThread,链式编程
- 第四十三篇:iOS链式编程Block
- iOS开发之Masonry(一)
- 【读书】书海泛舟记
- Codeforce 894A QAQ(计数)
- 拓扑排序专题
- 设计模式—责任链模式
- hdu 1166(线段树模板)
- iOS 链式编程(Masonry)
- 自身对C语言数组越界访问的简易理解
- LVS原理
- 欢迎使用CSDN-markdown编辑器
- c#线程池实例
- 拨开字符编码的迷雾--字符编码概述
- hadoop 命令管理学习
- ubuntu14.04上安装Mist
- 51nod算法马拉松31总结