UITableViewAutomaticDimension使空单元格过大

时间:2017-03-05 22:07:29

标签: ios uitableview uitableviewautomaticdimension

我正在使用UITableViewAutomaticDimension创建一个TableView,但出于某种原因," extra"最后一个之后的空白单元格与其中包含文本的最后一个单元格的尺寸相同。我希望空白单元格都是较小的尺寸,除非填充了需要自动调整大小的文本。我怎么能改变这个?任何帮助,将不胜感激。我对此非常陌生。谢谢大家!请参阅下面的TableView截图。我已添加了我的代码供参考。

screenshot

Import UIKit

class LoLFirstTableViewController: UITableViewController {

    var tasks:[Task] = taskData

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.estimatedRowHeight = 60.0
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

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

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return tasks.count
    }

    @IBAction func cancelToLoLFirstTableViewController(_ segue:UIStoryboardSegue) {
    }

    @IBAction func saveAddTask(_ segue:UIStoryboardSegue) {
        if let AddTaskTableViewController = segue.source as? AddTaskTableViewController {

            if let task = AddTaskTableViewController.task {
                tasks.append(task)

                let indexPath = IndexPath(row: tasks.count-1, section: 0)
                tableView.insertRows(at: [indexPath], with: .automatic)
            }
        }
    }

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

        let task = tasks[indexPath.row] as Task
            cell.task = task
        return cell
        }

}

2 个答案:

答案 0 :(得分:0)

首先,从storyboard设置默认行高。空行将设置为此高度。

然后对于带有文本的行,覆盖此表视图的委托方法:

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

这将强制表视图返回指定行的高度。通过索引路径从行中获取文本。计算文本高度并返回正确的行高。

以下是计算字符串框架的方法:

func boundingRect(with size: CGSize, 
          options: NSStringDrawingOptions = [], 
       attributes: [String : Any]? = nil, 
          context: NSStringDrawingContext?) -> CGRect

答案 1 :(得分:0)

您可以通过将此单元格添加到viewDidLoad()来隐藏空单元格:

wchar_t