Masonry最近才开始使用,还是有点不是很熟悉,下面是一些使用的场景总结。
>想实现如下图所示的效果:label1和label2不知道具体的内容,希望达到的效果是父view会随着label1和label2的内容变化而变化。如图:
实现代码如下:
#import"ViewController.h"
#import"Masonry.h"
@interfaceViewController()
@end
@implementationViewController
- (void)viewDidLoad {
[superviewDidLoad];
//黄色背景(父视图)
UIView*bg = [[UIViewalloc]init];
bg.backgroundColor= [UIColoryellowColor];
[self.viewaddSubview:bg];
[bgmas_makeConstraints:^(MASConstraintMaker*make) {
make.top.equalTo(self.view).offset(20);
make.left.equalTo(self.view).offset(20);
make.right.equalTo(self.view).offset(-20);
**//注意:测试没有设置高度或者距离底部的约束,因为此时不知道具体约束是什么...**
}];
//label1
UILabel*label1 = [UILabelnew];
label1.backgroundColor= [UIColorblueColor];
label1.textAlignment=NSTextAlignmentCenter;
label1.textColor= [UIColorredColor];
label1.font= [UIFontsystemFontOfSize:15];
label1.text=@"是阿萨德撒而发啊文件覅啊我耳机覅啊我二纺机哦安慰奖福安慰金佛我耳机佛啊 二纺机哦嗷呜二纺机哦啊王嘉尔飞啊违反 啊我发啊我发啊我非啊我额发=====";
label1.numberOfLines=0;
[bgaddSubview:label1];
//label2
UILabel*label2 = [UILabelnew];
label2.backgroundColor= [UIColorgreenColor];
label2.textAlignment=NSTextAlignmentCenter;
label2.textColor= [UIColorredColor];
label2.font= [UIFontsystemFontOfSize:15];
label2.text=@"4561545346845456+5ds65d62+6sed4f6s7e4df6s48e74d65346845456+5ds65d62+6sed4f6s7e4df5346845456+5ds65d62+6sed4f6s7e4df4s56465d4546";
label2.numberOfLines=0;
[bgaddSubview:label2];
//设置label1的约束
[label1mas_makeConstraints:^(MASConstraintMaker*make) {
make.top.equalTo(bg).offset(20);//父试图下方20
make.left.equalTo(bg);//左边和父试图一致
make.right.equalTo(bg);//右边和父试图一致
}];
////设置label2的约束
[label2mas_makeConstraints:^(MASConstraintMaker*make) {
make.top.equalTo(label1.mas_lastBaseline).offset(10);//距离label2下面10,mas_lastBaseline这个属性有点意思~
make.left.equalTo(bg).offset(15);//左边距离父试图15
make.right.equalTo(bg);//右边和父试图一致
}];
//父试图添加底部的约束(注意是添加:makeConstraints)
[bgmas_makeConstraints:^(MASConstraintMaker*make) {
make.bottom.equalTo(label2).offset(30);//距离label2距离为30
}];
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
}
@end
注释还算是可以吧,相信大家都看得懂~~
网友评论