Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何根据内容改变tableview高度_Ios_Uitableview_Swift4 - Fatal编程技术网

Ios 如何根据内容改变tableview高度

Ios 如何根据内容改变tableview高度,ios,uitableview,swift4,Ios,Uitableview,Swift4,我试图根据内容改变tableview的高度,我做到了,但是tableview下面会有一个标签。每当桌子高度增加或减少时,标签应位于下方。我试过了,但是无论最初给出的桌子高度是多少,标签都是一样的。如果有人能帮我这么做,那就太好了 首先,您必须创建一个滚动视图,并将tableview和标签添加到contentView中。将contentView的高度设置为动态,并将IBOutlet设置为tableView高度约束,如下所示 @IBOutlet var constTableHeight : NSLa

我试图根据内容改变
tableview
的高度,我做到了,但是
tableview
下面会有一个
标签。每当桌子高度增加或减少时,
标签应位于下方。我试过了,但是无论最初给出的桌子高度是多少,标签都是一样的。如果有人能帮我这么做,那就太好了


首先,您必须创建一个滚动视图,并将tableview和标签添加到contentView中。将contentView的高度设置为动态,并将IBOutlet设置为tableView高度约束,如下所示

@IBOutlet var constTableHeight : NSLayoutConstraint!
重新加载表格后,设置constTableHeight的值

let heightTBL : CGFloat = (tblView?.contentSize.height)!
constTableHeight?.constant = heightTBL 

在viewDidLoad方法中,添加

self.tableView.estimatedRowHeight=44//默认表格视图单元格高度

然后在你的课堂上加上这个

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

如果在代码中使用了,请首先删除以下代码。我们不需要它

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 50
}
接下来,在设置
UITableViewCell
时,确保未设置高度约束之一。下面是标题和说明的示例

    /*  Setup title label  */
    NSLayoutConstraint.activate([
        titleLabel.topAnchor.constraint(equalTo: topAnchor, constant: 0),
        titleLabel.leftAnchor.constraint(equalTo: leftAnchor, constant: 10),
        titleLabel.rightAnchor.constraint(equalTo: rightAnchor, constant: -10),
        titleLabel.heightAnchor.constraint(equalToConstant: 40)
        ])

    /*  Setup description label  */
    NSLayoutConstraint.activate([
        descriptionLabel.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 0),
        descriptionLabel.leftAnchor.constraint(equalTo: titleLabel.leftAnchor, constant: 0),
        descriptionLabel.rightAnchor.constraint(equalTo: titleLabel.rightAnchor, constant: 0),
        descriptionLabel.bottomAnchor.constraint(equalTo: bottomAnchor, constant: 0)
        ])
不要忘记将
描述标签
numberOfLines
设置为零。
Boom,完成了。

如果您希望表格视图单元格的高度根据其中的标签增加,则必须实现两种类似的方法(Swift 4

1-此方法告诉单元格自动增加高度

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return UITableView.automaticDimension
    }
2-实现您想要的估计行高,比如140

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
        return 140
    }
3-在单元格中放置标签时,请确保行数为“0”。添加顶部、前导、底部和尾随页边距

  override func viewDidLoad()    
    { 
        Tablename.estimatedRowHeight = 100  
        Tablename.rowHeight = UITableViewAutomaticDimension
     }

在Tableview单元格中,不要忘记为单元格的最后一个ui组件提供上、前导、尾随和下边距,以使其大小动态变化。

行不清楚->每当表格高度增加或减少时,该标签应位于下方。将该标签添加为表格页脚视图