0

我使用的方法如下iOS8如何动态修复UITableViewHeaderFooterView的高度尺寸?

我刚尝试下面的代码行,动态地设置UITableViewHeaderFooterView高度尺寸。

self.tableView.estimatedSectionHeaderHeight = 100 self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension

我具有以下问题

在iOS9,iOS10可以正常运行,并且可以正确地显示。但是,不能在iOS8上正确显示,并显示以下错误:

enter image description here

我的分析如下:

从错误提示,我可以看到这个问题是NSLayoutConstraint :0x7f8498d7b890 _UITableViewHeaderFooterContentView:0x7f8498cb9200.height == 0

但我从来没有任何约束,以UITableViewHeaderFooterContentView

我应该如何适应iOS8?

+0

呼叫,当你回到你的了'表视图单元格中为行at'方法'updateConstraintsIfNeeded'方法。 'cell.updateConstraintsIfNeeded() 回报cell' ,则不需要此步为iOS 9+ –

+0

此方法不起作用 – ChildrenGreens

+0

为了使UITableViewAutomaticDimension工作,你必须将所有左,右,底部和顶部约束相对于单元格容器视图。检查你是否添加了所有四个约束... –

回答

1

您需要使用的UIView systemLayoutSizeFittingSize:

-(void)viewDidLayoutSubviews 
    { 
     [super viewDidLayoutSubviews]; 

     [ViewHeader setNeedsLayout]; 
     [ViewHeader layoutIfNeeded]; 
     CGFloat height = [ViewHeader systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; 

     CGRect headerFrame = ViewHeader.frame; 
     headerFrame.size.height = height; 
     ViewHeader.frame = headerFrame; 
     [tbl setTableHeaderView:ViewHeader]; 
    }