欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-04-30 20:13:48
[ios]对tableheaderview添加约束后适配高度 tableview调用settableheaderview方法设置headerview后,发现若对headerview添加了约束再对其上...

[ios]对tableheaderview添加约束后适配高度

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

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

 

#import "homeviewcontroller.h"

@interface homeviewcontroller () 
@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 minx = 100;
    for (uiview *tempview in subviews) {
        float tempheight = tempview.frame.origin.y + tempview.frame.size.height;
        if (tempheight > maxheight) {
            maxheight = tempheight;
        }
        float tempx = tempview.frame.origin.y;
        if (minx > tempx) {
            minx = tempx;
        }
    }
    cgrect hbounds = tvheaderview.bounds;
    hbounds.size.height = maxheight + minx;
    tvheaderview.bounds = hbounds;
    [_tableview settableheaderview:tvheaderview];
}

- (void)viewdidappear:(bool)animated {
    [self updateheaderviewheight];
}

@end

 

图一:

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

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

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

图二:

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

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

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