之前做适配(还没接触过Masonry的时候) 大体有这样几种方案
第一种:
在pch文件写下
// 屏幕宽度
#define screenWidth [[UIScreen mainScreen]bounds].size.width
// 屏幕高度
#define screenHeight [[UIScreen mainScreen]bounds].size.height
之后就是根据页面大小还有比例来设计
当我接触了Masonry 并且掌握之后 觉得真是方便很多
但是Masonry有一个缺点 控件之间的布局(x和y坐标)是相对的 但是大小是对于本身的 它不能获取到最后一个控件的frame值 只能知道大小
所以当你用scrollview的时候 判断内容大小的时候 这个控件的frame值就取不到了
附上使用代码
<span style="white-space:pre"> </span>//图标
UIImageView * itemImage = [[UIImageView alloc]init];
itemImage.layer.cornerRadius = 20;
itemImage.image = [UIImage imageNamed:@"logo"];
itemImage.clipsToBounds = YES;
[self.contentView addSubview:itemImage];
//线
UIImageView * line = [[UIImageView alloc]init];
line.backgroundColor = MyColor(204, 174, 205);
[self.contentView addSubview:line];
[itemImage mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.contentView).with.offset(50);
make.top.equalTo(self.contentView.mas_top).with.offset(20);
make.width.equalTo(@40);
make.height.equalTo(@40);
}];
<span style="white-space:pre"> </span>[line mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(itemImage).with.offset(20.5);
make.top.equalTo(itemImage.mas_bottom).with.offset(5);
make.width.equalTo(@0.5);
make.height.equalTo(@30);
}];
1⃣️
make.left.equalTo(self.contentView).with.offset(50);
表示控件的左边相等于<span style="font-family: Arial, Helvetica, sans-serif;">self.contentView的左边再加50个像素 </span>
</pre>2⃣️<p></p><p></p><pre name="code" class="objc">make.top.equalTo(self.contentView.mas_top).with.offset(20);
表示:控件的顶部距离
self.contentView的顶部 (当方向相同其实可以省略方向)再加20
3⃣️:
make.width.equalTo(@40);
控件的宽度为40
4⃣️
make.height.equalTo(@30);
控件的高度为30
注意:
约束条件的中的宽度若不写 则会自动算出Label中字符串的长度做自适应