[iOS]对TableHeaderView添加约束后适配高度

来源:互联网 发布:php addslashes 编辑:程序博客网 时间:2024/06/04 18:28

[iOS]对TableHeaderView添加约束后适配高度

demo:http://download.csdn.net/download/u012881779/9948738

tableView调用setTableHeaderView方法设置headerView后,发现若对headerView添加了约束再对其上的label赋值时,headerView高度无法自动适配。

这里换了下思路,用代码结合约束的方式来实现TableHeaderView高度的适配。

#import "HomeViewController.h"@interface HomeViewController () <UITableViewDelegate, UITableViewDataSource>@property (weak, nonatomic) IBOutlet UITableView *tableView;@property (strong, nonatomic) IBOutlet UIView *headerView;@end@implementation HomeViewController- (void)viewDidLoad {    [super viewDidLoad];    self.title = @"首页";    self.automaticallyAdjustsScrollViewInsets = NO;    [_tableView setTableHeaderView:_headerView];}// 更新headerView高度- (void)updateHeaderViewHeight {    UIView *tvHeaderView = _headerView;    NSArray *subViews = [tvHeaderView subviews];    float maxHeight = 0;    float minY = 0;    for ( int i = 0 ; i < subViews.count ; i ++) {        UIView *tempView = [subViews objectAtIndex:i];        float tempHeight = tempView.frame.origin.y + tempView.frame.size.height;        if (tempHeight > maxHeight) {            maxHeight = tempHeight;        }        if (i == 0) {            float tempY = tempView.frame.origin.y;            if (tempY > 0) {                minY = tempY;            }        }    }    CGRect bounds = tvHeaderView.bounds;    bounds.size.height = maxHeight + minY;    tvHeaderView.bounds = bounds;    [_tableView setTableHeaderView:tvHeaderView];}- (void)viewDidAppear:(BOOL)animated {    [self updateHeaderViewHeight];}@end 

图一:

如此添加约束(约束底边),无法适配headerView高度;



图二:

如此添加约束(不约束底边),再结合代码能适配headerView的高度;