使用Masonry 配置好约束,再给每个label设置好约束和内容(内容确定已经设置),拿到的label的宽度是0。最终label是正常显示的。
这是实现的代码:四个函数从上到下依次调用
//创建labels
- (void)createView
{
[self.view addSubview:[UIView new]];
//创建分类选择视图
classificationScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, kNavigationBarHeight + kStatusBarHeight, kScreenWidth, kClassificationScrollViewHeight)];
[self.view addSubview:classificationScrollView];
classificationScrollView.contentSize = CGSizeMake(2 * kScreenWidth, kClassificationScrollViewHeight);
classificationScrollView.backgroundColor = [UIColor yellowColor];
contentView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, contentViewWidth, kClassificationScrollViewHeight)];
[classificationScrollView addSubview:contentView];
contentView.backgroundColor = [UIColor redColor];
classificationScrollView.bounces = NO;
//创建类别
labelViewArray = [[NSMutableArray alloc]initWithCapacity:11];
for (int i = 0; i < classificationArray.count; i++)
{
UILabel *labelView = [UILabel new];
[labelViewArray addObject:labelView];
[contentView addSubview:labelView];
}
}
//配置约束
- (void)setAutolayout
{
[labelViewArray[0] mas_makeConstraints:^(MASConstraintMaker *make)
{
make.top.bottom.equalTo(contentView);
make.left.equalTo(contentView.mas_left).offset(kSpace);
}];
[labelViewArray[1] mas_makeConstraints:^(MASConstraintMaker *make)
{
make.top.bottom.equalTo(contentView);
make.left.equalTo(((UILabel *)labelViewArray[0]).mas_right).offset(kSpace);
}];
[labelViewArray[2] mas_makeConstraints:^(MASConstraintMaker *make)
{
make.top.bottom.equalTo(contentView);
make.left.equalTo(((UILabel *)labelViewArray[1]).mas_right).offset(kSpace);
}];
[labelViewArray[3] mas_makeConstraints:^(MASConstraintMaker *make)
{
make.top.bottom.equalTo(contentView);
make.left.equalTo(((UILabel *)labelViewArray[2]).mas_right).offset(kSpace);
}];
[labelViewArray[4] mas_makeConstraints:^(MASConstraintMaker *make)
{
make.top.bottom.equalTo(contentView);
make.left.equalTo(((UILabel *)labelViewArray[3]).mas_right).offset(kSpace);
}];
[labelViewArray[5] mas_makeConstraints:^(MASConstraintMaker *make)
{
make.top.bottom.equalTo(contentView);
make.left.equalTo(((UILabel *)labelViewArray[4]).mas_right).offset(kSpace);
}];
[labelViewArray[6] mas_makeConstraints:^(MASConstraintMaker *make)
{
make.top.bottom.equalTo(contentView);
make.left.equalTo(((UILabel *)labelViewArray[5]).mas_right).offset(kSpace);
}];
[labelViewArray[7] mas_makeConstraints:^(MASConstraintMaker *make)
{
make.top.bottom.equalTo(contentView);
make.left.equalTo(((UILabel *)labelViewArray[6]).mas_right).offset(kSpace);
}];
[labelViewArray[8] mas_makeConstraints:^(MASConstraintMaker *make)
{
make.top.bottom.equalTo(contentView);
make.left.equalTo(((UILabel *)labelViewArray[7]).mas_right).offset(kSpace);
// make.right.equalTo(contentView);
}];
[labelViewArray[0] setContentHuggingPriority:UILayoutPriorityDefaultLow forAxis:UILayoutConstraintAxisHorizontal];
[labelViewArray[1] setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[labelViewArray[2] setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[labelViewArray[3] setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[labelViewArray[4] setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[labelViewArray[5] setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[labelViewArray[6] setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[labelViewArray[7] setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
[labelViewArray[8] setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal];
}
//设置每个label的内容
- (void)setArrayViews
{
for (int i = 0; i < classificationArray.count; i++)
{
UILabel *labelView = labelViewArray[i];
labelView.text = classificationArray[i];
labelView.textAlignment = NSTextAlignmentCenter;
}
}
//这个函数里面求每个label的宽度,输出的label的宽度全是0
- (void)resetContentView
{
NSInteger widthSum = 0;
for (int i = 0; i < classificationArray.count; i++)
{
UILabel *lableView = labelViewArray[i];
widthSum = widthSum + lableView.bounds.size.width;
NSLog(@"%f", lableView.bounds.size.width);
}
contentViewWidth = (classificationArray.count + 1) * kSpace + widthSum;
contentView.bounds = CGRectMake(0, 0, contentViewWidth, kClassificationScrollViewHeight);
}