Ios 表视图单元格行高不起作用
我尝试在表格视图单元格中硬编码行高。运行程序后,看起来只有一行。我怀疑这是因为表视图行的高度Ios 表视图单元格行高不起作用,ios,swift,uitableview,row-height,Ios,Swift,Uitableview,Row Height,我尝试在表格视图单元格中硬编码行高。运行程序后,看起来只有一行。我怀疑这是因为表视图行的高度 您能告诉我这里出了什么问题吗?在UITableViewDelegate中添加此代码 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 100 } 在Xcode 9中,tableview根据Autolayout自动创建估算单元。因为您没有提供自动
您能告诉我这里出了什么问题吗?在UITableViewDelegate中添加此代码
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
在Xcode 9中,
tableview
根据Autolayout
自动创建估算单元。因为您没有提供自动布局,所以您得到了这个
您需要通过选择tableview并取消选中两个选项来禁用估计和自动单元格大小:
给出您想要的行高值,将相应地创建单元格
希望这能有所帮助。如果希望单元格根据其内容占用空间,则需要在表视图中返回UITableViewAutomaticDimension,委托方法行高度:和估计行高度:确保执行以下步骤,自动标注对单元格/行高布局有效。(以下是UILabel的示例代码以及如何为表格单元格设置特定于内容的高度。)
- 分配并实现数据源和委托
- 将
分配给行高和估计高度UITableViewAutomaticDimension
- 实施委托/数据源方法(即
并向其返回值heightForRowAt
)UITableViewAutomaticDimension
- 设置行数=0(&换行模式=截断尾部)
- 设置与其superview/单元容器相关的所有约束(顶部、底部、右-左)
- 可选:设置标签的最小高度,如果您想要标签覆盖的最小垂直面积,即使没有数据
在
viewdiload()中将行高和估计行高设置为自动
table.rowHeight = UITableViewAutomaticDimension
table.estimatedRowHeight = UITableViewAutomaticDimension
在heightForRowAt:
将高度设置为uitableview自动尺寸设置为
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
注意:将标签长餐厅名称的行数设置为0。根据我的做法,您必须添加一系列约束,然后自动计算行高
简言之,我所做的:(添加和修改约束是故事板视图右下角最右边的两个按钮)我首先选择原型单元中的所有视图,删除所有约束(最右边的按钮上有一个不错的选项),然后添加所有缺少的约束(另一个不错的选项)最后我选择了右边的第二个按钮,点击了所有的红线。可以在同时选择所有视图的情况下执行此操作。然后它工作了。您可以在tableviewdelegate中手动执行此操作:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
将行数设置为0
设置
返回tableView中的UITableView.automaticDimensions
(\uu:heightForRowAt:)
delegate方法
设置所有约束。底部约束对于增加表视图单元格高度很重要
你的一切都准备好了不,不要这样做。如果所有行的高度都相同,则最好只需在viewDidLoad
中设置一次表视图的rowHeight
属性。仅当不同的行具有不同的高度时才实现此委托方法。@rmaddy根据apple文档,委托的性能优于属性。@dahiya_-boy您误读了文档。UITableView行高
和UITableView委托行高
的文档清楚地说明委托方法是一个性能问题。设置rowHeight
属性要比使用委托方法(假设所有行的高度相同)有效得多。高度似乎没有问题,您是否也在代码中设置了“来自委托方法的高度”?如果是,请删除该方法。您的标签行号是多少?它应该是0,那么您的约束集呢?另一方面,您是否设置了动态约束表视图高度?您可以查看我的答案,希望这对您有所帮助您也可以使用:yourTable.rowHeight=UITableViewAutomaticDimension yourTable.estimatedRowHeight=UITableViewAutomaticDimensions如果我有不同类型的原型单元和不同的高度?
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
yourTableView.rowHeight = UITableView.automaticDimension and
yourTableView.estimatedRowHeight = UITableView.automaticDimension