你可以使用Masonry来实现这个布局要求。下面是一种可能的实现方式:
UIView *contentView = [UIView new];
[self.scrollView addSubview:contentView];
UILabel *label = [UILabel new];
label.numberOfLines = 0; // 多行显示
label.text = @"Your label content";
[contentView addSubview:label];
// 使用Masonry进行布局
[contentView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.scrollView);
make.width.equalTo(self.scrollView);
}];
[label mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.top.right.equalTo(contentView).insets(UIEdgeInsetsMake(10, 10, 10, 10));
}];
// 根据内容高度设置scrollView的高度约束
[label setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[label setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.bottom.equalTo(self.view);
make.left.right.equalTo(self.view).insets(UIEdgeInsetsZero);
CGFloat maxHeight = 200;
make.height.lessThanOrEqualTo(@(maxHeight)).priorityLow(); // 当高度超过200时,低优先级限制高度为200
}];
在上述代码中,首先创建一个contentView作为UIScrollView的子视图,并将其约束与scrollView的边缘相等。然后,在contentView中添加一个多行显示的UILabel,并将其约束到父视图边距内部的偏移量为10。接着,通过设置标签的压缩和拉伸优先级,使其根据内容自动调整高度。最后,使用UIScrollView的约束将其顶部和底部与父视图对齐,并限制其高度不超过200,低优先级。
这样布局后,当标签内容的高度小于200时,scrollView的高度将与标签高度相等;当标签内容高度超过200时,scrollView的高度将被限制为200,并可以滑动浏览完整内容。
内容由零声教学AI助手提供,问题来源于学员提问




