如何在Swift中更改UITableView单元格的高度?

时间:2018-07-24 12:04:27

标签: ios swift uitableview

我正尝试在应用程序上显示评论,如下图所示。我正在使用Xcode 9.4.1。

app view

我使用以下代码隐藏标签:

if commentManager == nil {
    cell.managerReplyLabel.isHidden = true
    cell.ratingManagerLabel.isHidden = true
}

但是看起来仍然有一个空间,我隐藏了两个标签。

我尝试使用cell.ratingManagerLabel.font.withSize(0) cell.ratingManagerLabel.frame.size.height = 0来更改标签的高度,但这是行不通的。

如何减少空间?

更新:

我使用情节提要设置屏幕和自动布局。

autolayout

import UIKit
import Cosmos

class RatingTableViewCell: UITableViewCell {

    @IBOutlet weak var userNameLabel: UILabel!
    @IBOutlet weak var ratingStar: CosmosView!
    @IBOutlet weak var ratingUserLabel: UILabel!
    @IBOutlet weak var ratingManagerLabel: UILabel!

    @IBOutlet weak var managerReplyLabel: UILabel!

}

3 个答案:

答案 0 :(得分:3)

在UITableView类中使用委托方法。

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
    return 200 //or whatever you need
}

答案 1 :(得分:2)

有两种简单的解决方案:

  1. 将两个标签上的文本设置为nil(或"")。这样标签的高度将为零。

  2. 将标签环绕在垂直布局方向的UIStackView中。然后设置.isHidden = true也会有效地删除标签。

还请注意,您可能需要致电:

tableView.beginUpdates()
tableView.endUpdates()

强制表更新其单元格的高度。

答案 2 :(得分:0)

使用此tableview方法增加和减少行的高度

var selectedIndex = -1

 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if indexPath.row == selectedIndex {
            return 354
        }else {
            return 115
        }
    }