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