当 UITableViewCell 中的行数固定时,UILabel 占用空间?

Posted

技术标签:

【中文标题】当 UITableViewCell 中的行数固定时,UILabel 占用空间?【英文标题】:UILabel taking space when number of lines is fixed in UITableViewCell? 【发布时间】:2018-01-30 09:04:50 【问题描述】:

我在 UITableViewCell 中有一个 UILabel。我已将它的约束设置为顶部、底部、前导、尾随。如果我给它 numberoflines 为 0,那么它不会占用任何空间。但是如果给它固定的行数,那么它会从顶部和底部占用额外的空间。请告诉我是什么问题?

UITableView 委托代码

 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 

        return UITableViewAutomaticDimension
    

    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat 

        return UITableViewAutomaticDimension
    

约束给定为

UITableViewCell

的屏幕截图

【问题讨论】:

显示您的代码,tableView 的数据源方法和单元格的设计代码 就像米兰说的,为你的问题提供更多信息 in estimatedHeightForRowAt 返回一个常量,例如:44,而不是UITableViewAutomaticDimension 在estimateHeightForRowAt 方法中返回一些数字。 其他标签有多少行? 【参考方案1】:

当您将行数设为 0 以及上述约束时,UILabel 将具有自动高度,这意味着 tableview 单元格的 AutomaticDimension 将相对于 UILabel 高度。当UILabel的文本为空时,高度为零。

要克服这种情况,您可以指定以下两项之一:

    UILabel 的最小高度(例如,在约束中给出高度 > 30)

    使用委托方法估计 UITableViewCell 的高度

    func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat 
    
        return 100
    
    
    

【讨论】:

【参考方案2】:

扩展 ViewController: UITableViewDelegate, UITableViewDataSource

func numberOfSections(in tableView: UITableView) -> Int 
    return 1


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return 10


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    let lbl = cell.contentView.viewWithTag(10) as! UILabel
    lbl.text = "abcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksdabcljfdslkfj;dlskfjd;slkfjds;ljdsfldjsf;ldsjfdslkfjds;lfjds;lfjdfl;jdsf;lkdjsf;ldsjf;ldskjd;slfjdsl;fjd;fljdfl;kjsdflljksd"
    return cell


func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 

    return UITableViewAutomaticDimension


func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat 
    return 100


【讨论】:

其实我在当前标签上下都有标签 请分享带有约束的情节提要截图。 我已经分享了截图,请检查 你能告诉我这是什么问题吗? 我无法理解约束

以上是关于当 UITableViewCell 中的行数固定时,UILabel 占用空间?的主要内容,如果未能解决你的问题,请参考以下文章

插入 UITableViewCell 不起作用

即使没有数据,也可以在 Kendo Grid 中显示固定的行数?

访问报告中的固定行数

如何让 UITableViewCell 中的 imageView 大小固定

在屏幕下方加载时,UITableViewCell 按钮单击未注册

当数据集的列具有不同的行数时合并它们