Ich habe einen View-Controller mit Tabellenansicht. Die Tabellenansicht besteht aus einer benutzerdefinierten Zelle mit einem einzelnen Label. Ich habe Text unterschiedlicher Länge, die in diesen Zellen gezeigt werden sollen. Das Problem, dem ich gegenüberstehe, ist, dass die Zellen nicht auf die entsprechende Höhe erweitert werden. Ich habe viele Lösungen in SO getestet, aber keine von ihnen funktioniert so weit. Hier ist der Code für die View-ControllerDynamische Tabellenansicht Zellenhöhe für iOS 7
class ViewController: UIViewController {
@IBOutlet var tableView: UITableView!
let items = [
"This is the first text",
"This is the first text and this is the second text","now you may be thinking where is the third text?. Well, There was the first text and second text, now here is the third text",
"This is the fourth short and sweet text",
"Slow down you crazy child, you're so ambitious for a juvenile. If you're so smart, tell me why are you still so afraid.","Where's the fire? What's the hurry about. You better cool it off before you burn it out. There's so much to do and so many hours in a day.You got your passion, got your pride. Don't you know that only fools are satisfied. Dream on but don't imagine that they come true. Don't even realise vienna waits for you"]
var prototypeCell:CustomCell!
override func viewDidLoad() {
super.viewDidLoad()
//setting up tableview
self.tableView.allowsSelection = false
self.tableView.dataSource = self
self.tableView.delegate = self
configurePrototypeCell()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func configureCell(cell:CustomCell, forIndexPath indexPath:NSIndexPath)
{
cell.itemLabel.text = items[indexPath.row]
}
func configurePrototypeCell()
{
self.prototypeCell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as! CustomCell
}
}
extension ViewController:UITableViewDataSource
{
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! CustomCell
configureCell(cell, forIndexPath: indexPath)
return cell
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
}
extension ViewController: UITableViewDelegate
{
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
self.prototypeCell.itemLabel.text = items[indexPath.row]
self.prototypeCell.itemLabel.preferredMaxLayoutWidth = CGRectGetWidth(self.tableView.frame)
self.prototypeCell.setNeedsLayout()
self.prototypeCell.layoutIfNeeded()
let size = self.prototypeCell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)
let height = size.height
return height
}
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
}
CustomCell Klasse Unterklasse von UITableViewCell
ist. Es enthält UILabel
namens itemLabel.
set itemLabels Number of LIne = 0 und Zeilenumbruch-Modus zu Wortumbruch und UITableviewAutomaticDimention –
Unterstützt 'iOS 7' 'Swift'? – AechoLiu
@AechoLiu ja es tut – idocode