iOS a view according to its own content, adaptive height considerations

a custom view

#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

Now I want to adapt the height according to the displayed content,
wrong usage

    [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];

Please add a picture description

Correct usage, use masonry to add constraints

- (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];
}

renderings
Please add a picture description

It should be noted that if we want a view to adapt to the height, and the view is internally supported by masonry, then the view must also use masonry to add constraints to adapt to the height

Guess you like

Origin blog.csdn.net/LIUXIAOXIAOBO/article/details/130544847