【发布时间】:2015-02-09 22:03:04
【问题描述】:
我创建了一个测试项目来了解具有可变高度的表格单元格。我已经阅读了许多关于 StackOverflow 和其他地方的教程,但我仍然做错了什么,我不太确定是什么。
如何确保无论字符串长度如何,表格单元格的高度都会发生变化以容纳所有文本?
在这里,我使用一系列不同长度的字符串设置我的表格视图。
这是我的模拟器显示的内容以及我的代码:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var items: [String] = ["We", "Aenean lacinia bibendum nulla sed consectetur.", "Vestibulum id ligula porta felis euismod semper. Maecenas sed diam eget risus varius blandit sit amet non magna. Sed posuere consectetur est at lobortis. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Cras mattis consectetur purus sit amet fermentum. Etiam porta sem malesuada magna mollis euismod. Sed posuere consectetur est at lobortis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.", "Blah", "one two three", "Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam.", "gum gum gum gum", "Blah", "one two three", "Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam.", "gum gum gum gum", "Blah", "one two three", "Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam.", "gum gum gum gum", "Blah", "one two three", "Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam.", "gum gum gum gum", "Blah", "one two three", "Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam.", "gum gum gum gum", "Blah", "one two three", "Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam.", "gum gum gum gum"]
@IBOutlet var tableView: UITableView!
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
cell.textLabel?.text = self.items[indexPath.row]
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("You selected cell #\(indexPath.row)!")
}
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 130.0
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func prefersStatusBarHidden() -> Bool { return true }
}
在我的故事板中,我设置了一个带有一些约束的测试单元(可能做错了,不确定)。约束似乎是确定这个实现或完全搞砸它的关键
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
抱歉,您的实际问题是什么?有什么问题?
-
我的问题是单元格应该是可变高度以包含数组项中的所有文本。相反,它们会被
...截断。我也会在问题中重新添加这个,这样更清楚 -
你是不是把UITableViewCell中的标签做成了多行标签?
-
当前设置为 0。我也尝试使用值 1-5,没有任何变化
-
当我使用故事板时,问题在于没有正确使用自动布局来确保每个元素都放置了适当的约束、宽度和高度。我已经停止使用故事板并开始使用制图 (github.com/robb/Cartography) 进行手动布局以获得更多控制。这已经不是问题了
标签: uitableview swift ios8