【问题标题】:Swift: Dynamic Cell in table viewSwift:表格视图中的动态单元格
【发布时间】:2018-02-26 16:56:30
【问题描述】:

我正在尝试使表格视图单元格的高度 = 单元格的内容。

我在viewDidLoad() 中实现了这两行:

tableView.estimatedRowHeight = 200.0
tableView.rowHeight = UITableViewAutomaticDimension

不过,单元格正在改变它的高度!

【问题讨论】:

  • 你说单元格正在改变它的高度是什么意思?
  • 我的意思是高度太小而且表现得好像我没有添加这两行。标题是唯一出现在单元格中的内容。

标签: swift uitableview tableview height cell


【解决方案1】:

尝试使用 heightForRowAt 索引路径

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {return UITableViewAutomaticDimension}

+

    override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

【讨论】:

  • 或者试试这个来覆盖 func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return UITableViewAutomaticDimension }
【解决方案2】:

在我看来,您的问题可能是UITextView 的高度没有明确说明。文本视图的自然行为并不像它的内容那样高。

我建议在界面生成器中添加高度约束,将其连接到插座,然后在单元格 layoutSubviews 函数中计算高度,如下所示:

@IBOutlet var textViewHeightConstraint: NSLayoutConstraint!
func layoutSubviews() {
    super.layoutSubviews()
    let fixedWidth = textView.frame.size.width
    textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
    let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
    textViewHeightConstraint.constant = newSize.height
}

【讨论】:

    【解决方案3】:

    默认情况下,TextView 不会扩展以适应整个文本,因为它具有滚动功能,对于您想要的内容,您应该在 textView 中禁用滚动。

    选择 textView 并在 Attributes Inspector 选项卡中向下滚动并取消选中“Scrolling Enabled”

    【讨论】:

    • 太好了,这对我有用!!但是对于具有图像的单元格该怎么办,因为我遇到了同样的问题。
    • @mahdi 对于基于图像显示方式的 imageView,您可以在其上设置高度约束或设置纵横比约束
    【解决方案4】:

    在 ViewDidLoad 中

    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.estimatedRowHeight = 200
    

    并将您的标题标签和文本标签(替换文本视图)放在 UIView 中。并对 UIView 施加约束
    1. 尾随、前导、底部和顶部空间为零
    2. 将固定高度设为 200,并将关系更改为大于或等于 (>=)

    然后对标题标签进行约束
    1. 尾随、前导和顶部空间为零
    2. 将固定高度设为 20(您的选择)

    限制文本标签
    1. 尾随、前导、底部和顶部空间为零
    2. 将固定高度设为 180,并将关系更改为大于或等于 (>=)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 2017-05-14
      • 2016-04-02
      相关资源
      最近更新 更多