美文网首页iOS Dev
tableHeaderView自适应高度

tableHeaderView自适应高度

作者: anjohnlv | 来源:发表于2017-10-26 16:36 被阅读1539次

    autolayout为例:(autosizing道理一样)

    场景一:创建HeaderView

    创建HeaderView的时候需要指定它的高度。
    但是autolayout中,HeaderView的高度往往会根据子控件浮动。而由于HeaderView还没加到TableView上,所以,HeaderView自身又无法加约束。
    此时,我们需要把子控件的约束设置好,包括子控件对HeaderView的约束足以把HeaderView撑起来。
    接下来使用以下代码,便可自动计算并设置HeaderView了。

    CGFloat height = [headerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
        
    CGRect headerFrame = headerView.frame;
    headerFrame.size.height = height;
    headerView.frame = headerFrame;
    self.tableView.tableHeaderView = headerView;
    

    场景二:更新HeaderView

    我们给UITableView添加一个HeaderView,之后想要修改Header大小的时候,会发现HeaderView的大小正确变化了。但是界面显示仍然不正确,HeaderView的显示区域没有变化。如图:

    修改HeaderView
    这时候搜索引擎得知,只修改HeaderView是没有用的,需要重新设置HeaderView。像这样:
    CGRect frame = headerView.frame;
    frame.size.height = nNeedsHeight;
    headerView.frame = frame;
            
    tableView.tableHeaderView = headerView;
    

    可是,我们之所以用autolayout,就是因为不想算高度呀。都知道高度了解决方法就太多了。
    那么不知道高度的情况下怎么办呢?
    其实只需要以下设置就可以了。

    [self.tableView.tableHeaderView layoutIfNeeded]; 
    self.tableView.tableHeaderView = self.headerView;
    

    相关文章

      网友评论

        本文标题:tableHeaderView自适应高度

        本文链接:https://www.haomeiwen.com/subject/gjcosxtx.html