基于 Rhea 进行布局计算,没有使用 AutoLayout,用法请见代码。目前功能上比较简单,API 也比较简单,之后会添加其他功能。
自动布局
,只能进行一次性的计算。优点在于自动计算布局信息,无需手动计算 frame,可以在其他线程执行。现在已经支持相对坐标系。
UIView *view1 = [UIView new];
view1.backgroundColor = [UIColor greenColor];
UIView *view2 = [UIView new];
view2.backgroundColor = [UIColor blueColor];
[self.view addSubview:view1];
[self.view addSubview:view2];
[view1 addSubView:view2];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
ZZLayoutItem *item1 = [ZZLayoutItem new];
ZZLayoutItem *item2 = [ZZLayoutItem new];
[item1 addSubItem:item2];
item1.frame = CGRectMake(100, 100, 150, 150);
[item2 makeConstraints:^(ZZLayoutConstraintMaker *make) {
make.left.equalTo(item1).with.offset(10);
make.top.equalTo(item1).with.offset(140);
make.width.equalTo(item1).with.offset(-10);
make.height.equalTo(item1).with.offset(-10);
}];
[ZZLayoutItem layout];
dispatch_async(dispatch_get_main_queue(), ^{
view1.frame = item1.frame;
view2.frame = item2.frame;
});
});