在作开发的时候由于性能问题想把以前用Mansory的布局修改为绝对坐标的frame模式,替换成本很大,因此想写一个Mansory接口的frame布局的框架,因此就有了VVLayout的出现,解决了替换问题,也解决自动布局的性能问题。git
left、right、top、bottom、centerX、centerY、center、width、height、edges等
复制代码
/** * distribute with fixed spacing * * @param axisType 横排仍是竖排 * @param fixedSpacing 两个控件间隔 * @param leadSpacing 第一个控件与边缘的间隔 * @param tailSpacing 最后一个控件与边缘的间隔 */
- (void)distributeViewsAlongAxis:(VVAxisType)axisType withFixedSpacing:(CGFloat)fixedSpacing leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;
/** * distribute with fixed item size * * @param axisType 横排仍是竖排 * @param fixedItemLength 控件的宽或高 * @param leadSpacing 第一个控件与边缘的间隔 * @param tailSpacing 最后一个控件与边缘的间隔 */
- (void)distributeViewsAlongAxis:(VVAxisType)axisType withFixedItemLength:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;
复制代码
[self.view1 makeLayout:^(VVMakeLayout *make) {
make.width.vv_equalTo(100);
make.height.vv_equalTo(100);
make.center.equalTo(self.view);
}];
[self.view2 makeLayout:^(VVMakeLayout *make) {
make.width.vv_equalTo(50.0f);
make.height.vv_equalTo(50.0f);
make.bottom.equalTo(self.view1.vv_top);
make.left.equalTo(self.view1.vv_right).offset(20.0f);
}];
复制代码
[self.view1 makeLayout:^(VVMakeLayout *make) {
make.width.vv_equalTo(100);
make.height.vv_equalTo(100);
make.center.equalTo(self.view);
}];
[self.view2 makeLayout:^(VVMakeLayout *make) {
make.top.vv_equalTo(12.0f);
make.bottom.vv_equalTo(-14.0f);
make.left.vv_equalTo(16.0f);
make.width.equalTo(self.view1.vv_height).multipliedBy(0.5f);
}];
复制代码
self.label.text = @"分块下载还有一个比较使用的场景是断点续传,能够将文件分为若干个块,"
"而后维护一个下载状态文件用以记录每个块的状态,这样即便在网络中断后,"
"也能够恢复中断前的状态,具体实现读者能够本身尝试一下,仍是有一些细节需"
"要特别注意的,好比分块大小多少合适?下载到一半的块如何处理?要不要维护"
"一个任务队列";
[self.label makeLayout:^(VVMakeLayout *make) {
make.center.equalTo(self.view);
make.width.vv_equalTo(200.0f);
make.lessHeightThatFits(CGFLOAT_MAX);
}];
复制代码
[self.view1 updateLayout:^(VVMakeLayout *make) {
make.top.offset(100);
}];
复制代码
[self.view1 remakeLayout:^(VVMakeLayout *make) {
make.top.equalTo(@200);
make.centerX.offset(0.0f);
make.size.vv_equalTo(CGSizeMake(100, 100));
}];
复制代码
pod 'VVLayout'github