【问题标题】:Auto layout issue in TableViewTableView 中的自动布局问题
【发布时间】:2018-04-09 18:48:05
【问题描述】:

我使用此代码为我的UITableView 使用动态高度单元格:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "QuestionsCell", for: indexPath) as! QuestionsCell

    cell.label1.text = ""
    cell.label2.text = ""
    cell.label1.text = some text from array
    cell.label2.text = some text from array

    cell.label1.lineBreakMode = .byWordWrapping
    cell.label1.numberOfLines = 0
    cell.label1.sizeToFit()

    return cell
}

然后,我在 Storyboard 中为每个元素(顶部、底部、前导和尾随)固定了所有约束。在 iPhone 上一切正常,但在 iPad 上,当我滚动 UITableView 时发生这种情况(动态标签高度):

【问题讨论】:

    标签: ios swift uitableview


    【解决方案1】:

    sizeToFit() 仅使 cell1 与文本所需的一样大。 您还需要对表格视图单元格使用自动高度调整大小。

    在 viewDidLoad 中,

    self.tableView.rowHeight = UITableViewAutomaticDimension
    

    您还需要确保从粗体标签到“12 天前”标签之间存在垂直限制,以确保它们之间始终存在垂直空间,因此它们不会重叠。

    【讨论】:

    • 我已经添加了self.tableView.rowHeight = UITableViewAutomaticDimension 并估计了行高,是的,它们之间有一些空间(1dp)。
    • 尝试为“days ago”标签添加顶部和底部约束,相对于它的上方标签和底部视图。
    • 它们之间可能需要更多空间。我会尝试至少 10pt 看看会发生什么。
    【解决方案2】:

    你需要实现这个委托方法:

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

    如果这不起作用,请检查顶部 textView 和底部 textView 之间是否存在垂直间距限制。

    【讨论】:

    • 我已经实现并在它们之间添加了空间,但它在滚动时就像随机一样工作
    猜你喜欢
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    相关资源
    最近更新 更多