一个自定义视图
#import "TableHederView.h"
#import <Masonry/Masonry.h>
@interface TableHederView ()
@end
@implementation TableHederView
- (void)refreshWithArray:(NSArray *)array
{
UIView *view ;
for (int i = 0; i < array.count; i ++) {
NSString *title = array[i];
UILabel *label = [[UILabel alloc] init];
label.text = title;
[self addSubview:label];
if (i == 0) {
[label mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(10);
make.right.mas_equalTo(- 10);
make.top.mas_equalTo(10);
}];
} else {
if (i == array.count - 1) {
[label mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(10);
make.right.mas_equalTo(-10);
make.top.equalTo(view.mas_bottom).with.offset(10);
make.bottom.mas_equalTo(-10);
}];
} else {
[label mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(10);
make.right.mas_equalTo(-10);
make.top.equalTo(view.mas_bottom).with.offset(10);
}];
}
}
view = label;
}
}
@end
现在想要根据展示的内容自适应高度,
错误的用法
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
TableHederView *headerView = [[TableHederView alloc] initWithFrame:CGRectMake(0, 100, CGRectGetWidth(self.view.bounds), 0)];
headerView.backgroundColor = [UIColor cyanColor];
[self.view addSubview:headerView];
self.array = @[@"upsaifaskdjf;askldjf;alksdjf;aklsjfasdlkfja;sdklfja;skdlfj;aksdjf;aksldjf;aklsjdf;aklsdjf;klasjdf;klajdsf;alksdfj",
@"e二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二额二二二二二二二二二二额二二二二二二二二",
@"三三三三是哪三是哪三年三三三三三是哪三三三是哪三三三三三三阿森纳三三三三三安萨是哪是哪是哪三年三三三三三三是哪三男撒三三三三三三",
@"丝丝丝丝丝丝丝丝丝丝上丝丝丝丝丝丝丝丝丝丝上丝丝丝丝丝丝丝丝丝丝上丝丝丝丝丝丝丝丝丝丝上丝丝丝丝丝丝丝丝丝丝上v丝丝丝丝丝丝丝丝丝丝上丝丝丝丝丝丝丝丝丝丝上"];
[headerView refreshWithArray:self.array];
正确的用法, 使用 masonry 添加约束
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
TableHederView *headerView = [[TableHederView alloc] init];
headerView.backgroundColor = [UIColor cyanColor];
[self.view addSubview:headerView];
[headerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.mas_equalTo(0);
make.top.mas_equalTo(100);
}];
self.array = @[@"upsaifaskdjf;askldjf;alksdjf;aklsjfasdlkfja;sdklfja;skdlfj;aksdjf;aksldjf;aklsjdf;aklsdjf;klasjdf;klajdsf;alksdfj",
@"e二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二额二二二二二二二二二二额二二二二二二二二",
@"三三三三是哪三是哪三年三三三三三是哪三三三是哪三三三三三三阿森纳三三三三三安萨是哪是哪是哪三年三三三三三三是哪三男撒三三三三三三",
@"丝丝丝丝丝丝丝丝丝丝上丝丝丝丝丝丝丝丝丝丝上丝丝丝丝丝丝丝丝丝丝上丝丝丝丝丝丝丝丝丝丝上丝丝丝丝丝丝丝丝丝丝上v丝丝丝丝丝丝丝丝丝丝上丝丝丝丝丝丝丝丝丝丝上"];
[headerView refreshWithArray:self.array];
}
效果图
需要注意,如果我们想要某个view自适应高度,并且该view内部是通过masonry 撑起来高度的,那么该view 也要使用masonry 添加约束,才能自适应高度