Ios UITableViewController перекрывает строку состояния
У меня есть простая вкладка, первая вкладка которой есть UITableViewController
. После заполнения некоторых данных я заметил, что верхняя часть представления таблицы перекрывает строку состояния.
Я попытался возиться с edgesForExtendedLayout
и аналогичными настройками, но не нашел волшебную комбо. Кто-нибудь знает, как исправить это?
Шаги для воспроизведения:
- Создайте новое приложение с вкладками
- Удалите первую вкладку
UIViewController
и замените ее на UITableViewController
- Заполните
UITableView
некоторыми данными
- Запустите приложение
Вот несколько скриншотов настройки и проблемы:
![Xcode Storyboard]()
![UITableView overlapping status bar]()
Ответы
Ответ 1
Просто измените свойство contentInset
вашего представления таблицы, которое может добавить некоторые дополнения к вашему контенту. В viewDidLoad()
добавьте следующее:
tableView.contentInset.top = 20
В Objective-C вы не можете напрямую назначить верх, так что сделайте так:
self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);
Конечно, это может быть любое произвольное значение, в этом случае это высота строки состояния.
Ответ 2
Как указано в комментариях, одним из способов является (в Swift 3):
override func viewDidLoad() {
super.viewDidLoad()
tableView.contentInset.top = UIApplication.shared.statusBarFrame.height
}
Но это не так чисто. Лучше встроить UITableViewController в UINavigationController (Редактоp > Вставить в > Контроллер навигации) и снять флажок "Показывать панель навигации" в инспекторе. Нет необходимости в настройке!