Ios 自动调整UITableViewCell的大小:更改自定义单元格内视图的高度
我寻找了很多解决方案,但找不到任何解决这个特殊情况的方法 我在UITableView中创建了一个自定义单元格,这些元素从上到下按顺序排列,并带有约束:Ios 自动调整UITableViewCell的大小:更改自定义单元格内视图的高度,ios,objective-c,uitableview,autosize,Ios,Objective C,Uitableview,Autosize,我寻找了很多解决方案,但找不到任何解决这个特殊情况的方法 我在UITableView中创建了一个自定义单元格,这些元素从上到下按顺序排列,并带有约束: 图像视图(限制顶部屏幕、固定宽度、固定高度、水平居中) 顶部标签(约束顶部图像视图,固定宽度,水平居中)线设置为0 视图(约束顶部标签,固定宽度,水平居中)高度设置为0 按钮(约束俯视图、固定宽度、固定高度、水平居中) 底部标签(约束顶视图、约束底屏幕、固定宽度、固定高度、水平居中) 如果我为顶部标签插入很长的文本,单元格的高度也会自动正确调
- 图像视图(限制顶部屏幕、固定宽度、固定高度、水平居中)
- 顶部标签(约束顶部图像视图,固定宽度,水平居中)线设置为0
- 视图(约束顶部标签,固定宽度,水平居中)高度设置为0
- 按钮(约束俯视图、固定宽度、固定高度、水平居中)
- 底部标签(约束顶视图、约束底屏幕、固定宽度、固定高度、水平居中)
对于间隙,我已使用noobular建议的委托方法解决,将视图设置为0高度允许,以便在单元格高度更改时进行扩展。编辑:对于希望UIKit自动计算高度的自动调整单元格大小,我建议研究UITableViewAutomaticDimension 为tableView委托实现此方法:
tableView:HeightforRow索引路径:编辑:对于希望UIKit自动计算高度的自动调整单元格,我建议研究UITableView自动调整尺寸 为tableView委托实现此方法:
tableView:heightForRowAtIndexPath:通过这些方法,我获得了类似的效果。首先,我确定一个表示单元格高度的约束。我正在使用左侧装饰条的高度约束,装饰条固定在单元格的顶部和底部。重要的是,该约束属于单元格内容视图的子对象,并且在打开和关闭状态下都将显示在屏幕上。此约束连接到它将控制的单元格上的属性 当我想将单元格的高度更改为100时,我可以按如下操作:
cell.heightConstraint.constant = 100.0
cell.layoutIfNeeded()
tableView.beginUpdates()
tableView.endUpdates()
对BeginUpdate和EndUpdate的调用迫使tableView再次布局其单元格,从而扩展或收缩单元格。请注意,我实际上是在调用单元格自己的
setSelected:animated:
函数中的前两行,以及表视图控制器的tableView:didSelectCellAtIndexPath:
方法中的其余两行。当选定单元格时,这具有展开单元格的效果。我通过这些方法获得了类似的效果。首先,我确定一个表示单元格高度的约束。我正在使用左侧装饰条的高度约束,装饰条固定在单元格的顶部和底部。重要的是,该约束属于单元格内容视图的子对象,并且在打开和关闭状态下都将显示在屏幕上。此约束连接到它将控制的单元格上的属性
当我想将单元格的高度更改为100时,我可以按如下操作:
cell.heightConstraint.constant = 100.0
cell.layoutIfNeeded()
tableView.beginUpdates()
tableView.endUpdates()
对BeginUpdate和EndUpdate的调用迫使tableView再次布局其单元格,从而扩展或收缩单元格。请注意,我实际上是在调用单元格自己的
setSelected:animated:
函数中的前两行,以及表视图控制器的tableView:didSelectCellAtIndexPath:
方法中的其余两行。这会在选定单元格时扩展单元格。这可能是一个解决方案,但我认为在iOS8中,使用单元格的自动调整大小,我可以避免这种方法,直接更改视图的高度以使单元格自动调整大小。我认为您将自动布局误认为自动调整大小是两个不同的概念。表视图的单元格不调整大小,这就是sdk提供委托方法的原因。据我所知,iOS 8仍然是一样的。你应该接受答案,让其他人知道这是解决这个常见问题的潜在解决方案。你不应该使用heightForRowAtIndexPath自动调整单元格大小。这可能是一个解决方案,但我认为在iOS 8中,使用单元格自动调整大小,我可以避免这种方法,直接改变视图的高度,使单元格自动调整大小。我认为你把自动布局误认为是自动调整大小,这是两个不同的概念。表视图的单元格不调整大小,这就是sdk提供委托方法的原因。据我所知,iOS 8仍然是一样的。你应该接受这个答案,让其他人知道这是这个常见问题的潜在解决方案。你不应该将HeightForRowatineXpath用于自动调整单元格大小。非常感谢你给出了这个完美的答案!我只花了2个小时来找到这个解决方案!非常感谢你给我这个完美的答案!我只花了2个小时来找到这个解决方案!