У меня есть UITableViewCell
, содержащий только метку внутри. Метка ограничивается всеми полями ячейки (верхним, нижним, конечным и ведущим). Это многострочная метка (lines = 0) со статическим текстом, который будет занимать несколько строк на экране iPhone X как в альбомной, так и в портретной ориентации.
Вот скриншот IB с ограничениями.
Количество строк в коде установлено на 30. (Достаточно ячеек, чтобы всегда занимать экран)
Я реализовал все вышеперечисленное в новом проекте. Большая часть этого делается в IB, а подкласс UITableViewController
содержит только два метода, numberOfRowsInSection
и cellForRowAt indexPath
. Проект был создан на Xcode 9 с Swift 4, а устройство работает на iOS 11.2.
Вот код для подкласса UITableViewController
class ViewController: UITableViewController {
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 30
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
return cell
}
}
При первом запуске VC все ячейки имеют правильный размер. При повороте устройства в альбомную ориентацию размер ячеек изменяется, как и ожидалось. Теперь, когда я поворачиваю устройство обратно в портретную ориентацию, ячейки занимают большую высоту, чем должны.
Это происходит только на iPhone X. Ячейки расположены так, как и ожидалось на всех других iPhone.
Кроме того, этого не происходит ни в одном из моих старых проектов (созданных с использованием Xcode 8).
После поворота в альбомную ориентацию и обратно
Я пытался воспроизвести все атрибуты из моего старого проекта, но он по-прежнему имеет неправильный размер.
Будем признательны за любой вклад... Спасибо!
ИЗМЕНИТЬ:
Как отметил Брэндон, это происходит только тогда, когда UITableViewController
встроен в UINavigationController
. UITableView
в UIViewController
, встроенном в UINavigationController
, показывает правильное поведение. И UITableViewController
вне UINavigationController
также ведет себя так, как ожидалось.