如图:
标签从左到右依次排列,如果超出了父view,则自动换行。
如果使用的frame,只需判断标签的maxX是否大于父view的宽度即可。
但如果使用masonry,如何判断当前创建的标签超出了父view?
待补全的代码:
UILabel *lastLabel = nil;
for (int i = 0; i < arr.count; i ++) {
UILabel *label = [[UILabel alloc] init];
[bgView addSubview:label];
label.text = arr[i];
if (lastLabel == nil) {
[label mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_offset(5);
make.height.mas_equalTo(14);
make.top.mas_offset(2);
}];
} else {
[label mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(lastLabel.mas_right).mas_offset(20);
make.height.top.mas_equalTo(lastLabel);
}];
}
// 如果label超出父视图右边距,换行
if (这里怎么写?) {
[label mas_updateConstraints:^(MASConstraintMaker *make) {
make.left.mas_offset(5);
make.top.mas_equalTo(lastLabel.mas_bottom).mas_offset(5);
}];
}
lastLabel = label;
}
这个并不是用约束的最佳使用场景,计算frame感觉也不太好。
我觉得这个视图排列和视图其实并没有多大关系,因为并不是你设置了文字,视图就会有尺寸,而尺寸又和文字有关。所以,我认为你应该计算的是文字大小而非视图。
当然,如果你用collectionView 就不用计算了。