автоматическая настройка пользовательского UITableViewCell и метки в нем для текста

У меня есть пользовательский UITableViewCell котором есть только один ярлык. Я также установил количество строк в Interface Builder равным 0, когда я прочитал в StackOverflow.

 import UIKit class CommonListViewCell: UITableViewCell { @IBOutlet var background: UIView! @IBOutlet var titleLabel: UILabel! override func awakeFromNib() { super.awakeFromNib() // Initialization code titleLabel.font = UIFont(name: "roboto", size: titleLabel.font.pointSize) NSLog("CommonListViewCell font changed") } } 

Вот часть контроллера просмотра для работы с UITableView :

 override func viewDidLoad() { super.viewDidLoad() self.lvMain.delegate = self; self.lvMain.dataSource = self; self.lvMain.registerNib(UINib(nibName: "CommonListViewCell", bundle: nil), forCellReuseIdentifier: "commonlistidentifier") self.lvMain.estimatedRowHeight = 100 self.lvMain.rowHeight = UITableViewAutomaticDimension } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("commonlistidentifier", forIndexPath: indexPath) as! CommonListViewCell // Configure the cell... cell.titleLabel?.text = prayerList[indexPath.row].name cell.titleLabel?.sizeToFit() setLabelFont(cell.titleLabel!) Utils.nightCheck([cell.titleLabel!]) return cell } 

Таким образом, .sizeToFit() ничего не меняет – он все еще эллипсирует текст в 1 строке, и мне нужно, чтобы метка была как можно больше строк, а размер ячейки также подходит для метки.

Вам нужно использовать ячейки для самостоятельной калибровки.

 tableView.estimatedRowHeight = 100 tableView.rowHeight = UITableViewAutomaticDimension 

В вашем раскадровке или xib вам нужно убедиться, что вы установили правильные ограничения в своих ячейках. Не устанавливайте предопределенное ограничение высоты в вашей метке. Просто убедитесь, что вы используете ограничения сверху и снизу. Если вы не уверены в тексте, вы также можете указать минимальное ограничение высоты метки.

Попробуйте этот код:

Примечание. Оба метода должны работать. Проверено в Swift 3.

Способ 1:

 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { tableView.estimatedRowHeight = 44.0 // standard tableViewCell height tableView.rowHeight = UITableViewAutomaticDimension return yourArrayName.count } 

Способ 2:

 override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return UITableViewAutomaticDimension } override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { return UITableViewAutomaticDimension } 

Примечание. Вы должны поместить этот код в свой cellForRowAt

  yourCellName.sizeToFit() cell.textLabel?.numberOfLines = 0 

Вывод:

введите описание изображения здесь

  • добавление функции избранного в iPhone App iphone sdk
  • UITableViewCell высота анимации вместе с контентом
  • Как получить позицию subview в моем UITableViewCell по отношению ко всему окну?
  • UITableView падает на iOS 9, когда endUpdates вызывается с EXC_BAD_ACCESS
  • Измените размер UITextView на размер его текста и уменьшите размер, если он больше высоты
  • Влияет на метод обратной кнопки UINavigationBar (iOS)
  • TableView с несколькими ячейками прототипа
  • NSIndexpath.item vs NSIndexpath.row
  • UITableView динамически добавляет ячейки
  • Заполнение ячеек таблицы JSON с помощью Alamofire (Swift 2)
  • Перемещение ячеек из одной таблицы в другую в iOS
  • Давайте будем гением компьютера.