Ios 动态tableHeaderView无法正常工作

Ios 动态tableHeaderView无法正常工作,ios,swift,xcode,autolayout,tableview,Ios,Swift,Xcode,Autolayout,Tableview,我有一个tableHeaderView,它应该根据其内容具有动态高度 我尝试使用systemLayoutSizeFitting&sizeToFit方法为表视图设置新的高度,不幸的是,它似乎工作得很好,但不是我想要的(其中一个动态UI被裁剪)。我试图将UI的内容压缩阻力优先级设置为动态(1000),但效果不太好。。每次至少有一个UI被裁剪 编辑:约束: 尝试以下步骤创建动态tableview标题单元格:- 1-在序列图像板的tableview上添加一个UItableViewCell 2-根据

我有一个tableHeaderView,它应该根据其内容具有动态高度

我尝试使用systemLayoutSizeFitting&sizeToFit方法为表视图设置新的高度,不幸的是,它似乎工作得很好,但不是我想要的(其中一个动态UI被裁剪)。我试图将UI的内容压缩阻力优先级设置为动态(1000),但效果不太好。。每次至少有一个UI被裁剪

编辑:约束:


尝试以下步骤创建动态tableview标题单元格:-

1-在序列图像板的tableview上添加一个
UItableViewCell

2-根据您的要求创建
tableView标题
UI

3-根据您的要求将类创建为
TableViewHeaderCell
something,您希望在标题单元格中显示什么

4-然后在ViewController类中实现
headerview委托方法

/**
    Tableview header method 
*/
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

}
5-在此方法中,您希望创建
TableViewHeaderCell
对象并返回
单元格内容视图
,如下所示

    /**
    Table Header view cell implement and return cell content view when you create cell object with you identifier and cell name after that you have to mention height for header cell
    */
  override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
                let cell = tableView.dequeueReusableCell(withIdentifier: "Cell Identifier") as! CellName
                return cell.contentView
   }
6-实施
Tableview收割台高度方法

/**
Here you can specify the height for tableview header which is actually your `TableViewHeader Cell height`
*/
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
       //For eg
        return 100
    }
通过这些步骤,您还可以创建动态页眉视图单元格和页脚视图单元格,但对于页脚视图单元格,可以实现Tableview页脚视图委派方法


谢谢,

尝试以下步骤创建动态tableview标题单元格:-

1-在序列图像板的tableview上添加一个
UItableViewCell

2-根据您的要求创建
tableView标题
UI

3-根据您的要求将类创建为
TableViewHeaderCell
something,您希望在标题单元格中显示什么

4-然后在ViewController类中实现
headerview委托方法

/**
    Tableview header method 
*/
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

}
5-在此方法中,您希望创建
TableViewHeaderCell
对象并返回
单元格内容视图
,如下所示

    /**
    Table Header view cell implement and return cell content view when you create cell object with you identifier and cell name after that you have to mention height for header cell
    */
  override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
                let cell = tableView.dequeueReusableCell(withIdentifier: "Cell Identifier") as! CellName
                return cell.contentView
   }
6-实施
Tableview收割台高度方法

/**
Here you can specify the height for tableview header which is actually your `TableViewHeader Cell height`
*/
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
       //For eg
        return 100
    }
通过这些步骤,您还可以创建动态页眉视图单元格和页脚视图单元格,但对于页脚视图单元格,可以实现Tableview页脚视图委派方法


谢谢,

拥有动态高度的
TableHeaderView
。将以下代码添加到viewController。它会很有魅力的

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    if let headerView = tableView.tableHeaderView {
        let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
        var headerFrame = headerView.frame

        //Comparison necessary to avoid infinite loop
        if height != headerFrame.size.height {
            headerFrame.size.height = height
            headerView.frame = headerFrame
            tableView.tableHeaderView = headerView
        }
    }
}

注意:确保tableHeaderView具有适当的
自动布局
约束以获得适当的高度。

用于具有动态高度的
tableHeaderView
。将以下代码添加到viewController。它会很有魅力的

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    if let headerView = tableView.tableHeaderView {
        let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
        var headerFrame = headerView.frame

        //Comparison necessary to avoid infinite loop
        if height != headerFrame.size.height {
            headerFrame.size.height = height
            headerView.frame = headerFrame
            tableView.tableHeaderView = headerView
        }
    }
}


注意:确保tableHeaderView具有适当的
自动布局
约束以获得适当的高度。

让高度=tableView.tableHeaderView!。systemLayoutSizeFitting(UIView.layoutFittingCompressedSize)。高度表视图。表头视图!。frame.size.height=高度
这是错误的方法!!那么如何根据autolayout计算新高度呢@SPatelNo,只需设置适当的约束就可以了。
tableView.sectionHeaderHeight=UITableView.automaticDimension
请添加数据源和委托代码
let height=tableView.tableHeaderView!。systemLayoutSizeFitting(UIView.layoutFittingCompressedSize)。高度表视图。表头视图!。frame.size.height=高度
这是错误的方法!!那么如何根据autolayout计算新高度呢@SPatelNo,只需设置适当的约束即可。SECTIONHEADERHEIGH=UITableView。自动尺寸
请添加数据源和代理代码是的,我以前尝试过此代码,但由于某些原因,它会计算我的xib视图高度,但不会计算我的标签高度。因此,如果我想这样做,我必须在高度变量sizeToFit()之后添加我的标签高度(高度+=postCaption.frame.size.height),我不想像soforgot那样在@Mehul ThakkarCheck上提到您视图的约束,它必须起作用。在我的代码中,我有标签以及许多其他组件。但是上面的代码对我来说100%正常,@Galyes u right,这可能与标签约束有关,因为这个脚本总是输出高度,而没有新的标签高度,它似乎总是计算我在构建器界面上设置的高度。。你知道怎么解决这个问题吗@Mehul ThakkarI可以帮忙。。但是显示TableHeaderView的约束。你需要解决这个问题是的,我以前试过这个代码,但出于某种原因,它可以计算我的xib视图高度,但不能计算我的标签高度。因此,如果我想这样做,我必须在高度变量sizeToFit()之后添加我的标签高度(高度+=postCaption.frame.size.height),我不想像soforgot那样在@Mehul ThakkarCheck上提到您视图的约束,它必须起作用。在我的代码中,我有标签以及许多其他组件。但是上面的代码对我来说100%正常,@Galyes u right,这可能与标签约束有关,因为这个脚本总是输出高度,而没有新的标签高度,它似乎总是计算我在构建器界面上设置的高度。。你知道怎么解决这个问题吗@Mehul ThakkarI可以帮忙。。但是显示TableHeaderView的约束。你需要解决这个问题,这对我没有多大帮助,因为我不想要自定义标题。但是,我需要一个动态标题,它总是会将其高度更改为当前内容@Abhishek jadhavt这是您可以执行动态标题@Gal的方式,或者您可以通过编程方式创建标题,这对我没有多大帮助,因为我不想要自定义标题。然而,我需要一个动态标题,它总是将其高度更改为当前内容@Abhishek jadhavt这是您可以使用动态标题@Gal的方式,或者您也可以通过编程方式创建标题