ios - 自动调整 UITableViewCell : change height of a view inside a custom cell

标签 ios objective-c uitableview autosize

我搜索了很多解决方案,但找不到任何东西来解决这个特殊情况。

我在 UITableView 中创建了一个自定义单元格,这些元素按从上到下的顺序排列并具有约束条件:

  • imageview(约束顶屏,固定宽度,固定高度,水平居中)
  • 顶部标签(约束顶部 ImageView ,固定宽度,水平居中)线设置为 0。
  • view(约束top label,固定宽度,水平居中)高度设置为0。
  • 按钮(约束顶 View ,固定宽度,固定高度,水平居中)
  • bottom-label(约束顶 View ,约束底屏,固定宽度,固定高度,水平居中)

如果我为顶部标签插入很长的文本,单元格会正确地自动调整高度。

现在我想将一个 Action 附加到按钮以启用 View 高度的调整大小,就像 Accordion 一样。所以我试图改变高度但没有成功,如果我重新加载 tableview 也会发生任何变化。 我尝试对 View 的高度设置约束,但如果我更改所有内容移动但单元格的高度不变。

我可以让 View 改变高度的唯一方法是设置表格的行高,但这会改变表格的所有单元格,我只想打开一个单元格的 View 。

还有其他方法吗?

提前致谢 麦酒

编辑:

为了清除问题,我已经使用 noobular 建议的委托(delegate)方法解决了问题,将 View 设置为 0 高度允许在单元格高度更改时扩展 View 。

最佳答案

我通过这些方法达到了类似的效果。首先,我确定一个代表我的单元格高度的约束。我正在使用左侧固定到单元格顶部和底部的装饰条的高度约束。重要的是,此约束属于一个对象,该对象是单元格内容 View 的子对象,并且在打开和关闭状态下都将显示在屏幕上。此约束连接到它将控制的单元格上的属性。

当我想改变单元格的高度,即100时,我可以这样做:

cell.heightConstraint.constant = 100.0
cell.layoutIfNeeded()
tableView.beginUpdates()
tableView.endUpdates()

对 beginUpdates 和 endUpdates 的调用强制 tableView 再次布局其单元格,从而扩展或收缩单元格。请注意,我实际上是在单元格自己的 setSelected:animated: 函数中调用前两行,在 TableView Controller 的 tableView:didSelectCellAtIndexPath: 方法中调用其余两行。这具有在选中时展开单元格的效果。

关于ios - 自动调整 UITableViewCell : change height of a view inside a custom cell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27176836/

相关文章:

ios - tableview 在导航 Controller 中使用自动布局时有额外的标题

android - 2015 年哪个 Android/iPhone 跨平台框架?

ios - UINavigationBar 外观背景图像在 iOS 7.1 中重复和模糊

iphone - NSMutableArray 没有添加所有项目,只是最后一个 - Iphone/IOS/xcode

objective-c - 如果声明我自己的 getter & setter,则无法识别 iVar

iphone - NSInternalInconsistencyException(行数无效)

ios - 从核心数据中过滤标题

iphone - 锁定/保护 ios 应用程序的文档目录

ios - prepareForSegue 在 UIButton Action 事件之前调用

ios - UITableViewCell,设置带有多个标签的动态高度