Почему дополнительное пространство находится на вершине UITableView - просто
Я собираю некоторые программы для iOS и пытаюсь поместить UITableView в раскадровку. К сожалению, я пытаюсь помещать контент в верхнюю часть представления, но он помещается в некоторое пространство. Я попытался настроить значения в инспекторе для режима просмотра → , но это, похоже, не имеет никакого эффекта.
Я сделал зеленый фон и поместил цвет рамки, чтобы показать проблему. Я не разработчик iOS, но я бы предположил, что это самое простое решение, а не что-то сложное. Как сделать содержимое табличного представления синим с верхним? Я видел это Почему в верхней части моего UITableView добавлено дополнительное дополнение со стилем UITableViewStyleGrouped в iOS7, но не уверен, связано ли это.
спасибо для любой помощи
![enter image description here]()
Изменить # 1
Обновлено с изменениями и снимками экрана для этого представления таблицы
![enter image description here]()
![enter image description here]()
![enter image description here]()
Ответы
Ответ 1
Да, этот вопрос очень важен. UITableViewStyleGrouped
делит каждый раздел на "группу", вставляя это дополнительное дополнение... похожее на то, что оно делало pre-iOS7, но четкое, а не цветное по умолчанию, и только сверху, а не наоборот. Если вы не хотите заполнять по умолчанию, используйте UITableViewStylePlain
.
В противном случае, если вам нужно сохранить стиль таким же, сделайте то, что этот другой опубликованный из этой ссылки рекомендовал и изменил вставку содержимого:
self.tableView.contentInset = UIEdgeInsetsMake(-36, 0, 0, 0);
Или сделайте то, что предложил этот плакат, и установите tableHeaderView
height
на .-1
, т.е. почти 0
:
self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];
Ответ 2
Перейдите к инспектору атрибутов контроллера просмотра, выбрав xib или контроллер в Storyboard. Снимите флажок Настроить прокрутки в в Макет. Это решит проблему ![enter image description here]()
Ответ 3
В Swift вам просто нужно установить для свойства ниже значение false.
self.automaticallyAdjustsScrollViewInsets = false
Ответ 4
Это очень легко и отлично работает для меня.
Выберите контроллер в Story Board, в который вы разместили UITableView.
YouStoryboard.storyboard > YouViewController > Инспектор атрибутов > Снимите флажок - Отрегулируйте вставки прокрутки.
Убедитесь, что вы выбрали UIViewController, а не UITableView.
Ответ 5
Swift:
override func viewWillAppear(animated: Bool) {
self.edgesForExtendedLayout = UIRectEdge.None
OR
self.moduleListTableView.contentInset = UIEdgeInsetsMake(-64, 0, 0, 0);
OR
self.automaticallyAdjustsScrollViewInsets = false
}
Ответ 6
попробуйте это....
self.tableView.contentInset = UIEdgeInsetsMake( 20, 20 , 0, 0)
Ответ 7
в swift 3.0, надеюсь, вам помогут
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
Ответ 8
Причина этой проблемы: -
- UITableView не любит иметь заголовок с высотой 0.0. Если то, что вы пытаетесь сделать, это иметь заголовок с высотой 0, вы можете перейти к решению.
- даже если позже вы назначаете высоту не 0,0 для своего заголовка, UITableView не хочет, чтобы сначала был назначен заголовок с высотой 0.0.
В ViewDidLoad: -
self.edgesForExtendedLayout = UIRectEdge.None
self.automaticallyAdjustsScrollViewInsets = false
Нет необходимости в чем-то вроде этого: -
self.myTableview.contentInset = UIEdgeInsetsMake(-56, 0, 0, 0)
В heightForHeaderInSection
делегат: -
if section == 0
{
return 1
}
else
{
return 40; // your other headers height value
}
В viewForHeaderInSection
делегат: -
if section == 0
{
// Note CGFloat.min for swift
// For Objective-c CGFLOAT_MIN
let headerView = UIView.init(frame: CGRectMake(0.0, 0.0, self.myShaadiTableview.bounds.size.width, CGFloat.min))
return headerView
}
else
{
// Construct your other headers here
}
Ответ 9
Вот как это можно легко устранить с помощью раскадровки:
Выберите "Просмотр таблицы" > "Инспектор размеров" > "Вставки содержимого: никогда"