Настройка estimatedRowHeight
и rowHeight
из UITableView
делает вид таблицы рассчитанным на правильную высоту каждой ячейки. Это работает как шарм, пока я не использую классы размеров. Кажется, что все вычисления выполняются для класса Any/Any size, а более крупный шрифт применяется позже. В результате высота ячейки неправильно вычисляется, и метка не подходит.Динамическая высота UITableViewCell не работает с классами размеров
Вот мой код:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.estimatedRowHeight = 50
self.tableView.rowHeight = UITableViewAutomaticDimension
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Reuse", forIndexPath: indexPath) as! MyTableViewCell
println("Label font size: \(cell.myLabel.font)") // it prints (...)font-size: 11.00pt for all the size classes
return cell
}
}
Layout выглядит следующим образом:
И использование размерных классов является:
Теперь, когда я открываю приложение на iPhone выглядит как ожидаемый. Но на iPad ячейки не будут должным образом изменены. Фактически они изменяются в соответствии с текстом, если размер шрифта 11pt вместо 40pt.
Вопрос: Как я могу заставить вычисления выполнять после применения классов размеров?
Я уже пробовал трюк с переопределяющим набором признаков, как предлагается в: https://stackoverflow.com/a/28514006, но это не сработало. Я имею в виду, класс класса был правильно прочитан (Regular/Regular), но размер шрифта был еще 11pt.
Вы можете скачать этот простой проект от Github: https://github.com/darecki/TableViewTest
Скриншоты:
- iPhone 4s:
- IPad 2:
- IPad 2 после вызова
tableView.reloadData()
:
Edit: форматирование, добавлена GitHub ссылку.
Устанавливается в 0. Я добавил скриншоты, чтобы показать, как он себя ведет. –
установить шрифт ярлыка в awakefromnib вашей пользовательской ячейки() на основе типа устройства – dopcn
вы можете поделиться своим примером кода? – Johnykutty