Почему в верхней части моего UITableView есть дополнительные отступы со стилем UITableViewStyleGrouped в iOS7

( Неверный принятый ответ . Когда вы пытаетесь LockBits(...) на клонированном растровом изображении, в конце концов вы столкнетесь с ошибками GDI +.) Я вижу только 3 способа получить из этого:

  • скопируйте файл во временный файл и откройте, что простой способ new Bitmap(temp_filename)
  • открыть ваш файл, прочитать изображение, создать пиксельный размер- pixelformat copy (не Clone()) и удалите первый битмап
  • (признайте функцию заблокированного файла)

605
задан Bartłomiej Semańczyk 27 October 2015 в 07:52
поделиться

8 ответов

Ни один из ответов или обходных решений не помог мне. Большинство имело дело с самим tableView. То, что вызывало проблему для меня, было представлением, на которое я добавлял tableView или collectionView. Это - то, что зафиксировало его для меня:

SWIFT 5

edgesForExtendedLayout = []

я поместил это в свой viewDidLoad, и раздражающий разрыв ушел. Надежда это помогает.

0
ответ дан c0d3p03t 28 July 2019 в 17:22
поделиться

если self.automaticallyAdjustsScrollViewInsets = NO; не работает на Вас, удостоверьтесь высота или в tableview заголовке или разделите заголовок, CGFLOAT_MIN не 0.

, Например, если Вы хотите сделать tableview заголовок 0 высокими, можно сделать:

    CGRect frame = self.tableViewHeader.frame;
    frame.size.height = CGFLOAT_MIN; //not 0
    self.tableView.tableHeaderView.frame = frame;
    self.tableView.tableHeaderView = self.tableViewHeader;

Hope это помогает.

0
ответ дан coolbeet 4 November 2019 в 07:34
поделиться

Быстро 4 ответа...

, Если табличное представление выбрано в интерфейсном разработчике и в инспекторе атрибутов, "Сгруппированный" стиль выбран, введите следующий код в своем контроллере представления для устранения дополнительной проблемы пространства заголовка.

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return CGFloat.leastNonzeroMagnitude
}
1
ответ дан F. Morales 4 November 2019 в 07:34
поделиться

если я добавляю tableHeaderView с действительно маленькой высотой, это решает проблему

    let v = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 0.000000001))
    tableViewDocuments.tableHeaderView = v
0
ответ дан 22 November 2019 в 21:55
поделиться
set
  override func viewDidLoad() {
  self.tableView.delegate = self
  self.tableView.dataSource = self
}
0
ответ дан 22 November 2019 в 21:55
поделиться

Ответ 2019 года:

Вы просто делаете это

tableView.contentInsetAdjustmentBehavior = .never

Причудливый тонкий gotchya->

, Tableviews имеют очень странное поведение в эти дни:

  1. На устройствах с меткой (XR, и т.д.) это будет , не говоря о добавлении более вставки , НО ТОЛЬКО ЕСЛИ таблица запускается в физической вершине экрана.

  2. , Если Вы запускаете НЕ наверху экрана, он не будет делать это, но

  3. , Оба из thsoe случаев>> несвязанный < < к safeAreaInsets......., который является очень сбивающий с толку

, Все это полностью не документировано ... можно потратить впустую часы, понимая это.

при необходимости в измерениях для запуска на самом деле с вершины экрана/таблицы,

на самом деле просто, пойдите:

tableView.contentInsetAdjustmentBehavior = .never

А хороший пример, очевидно, когда Вы добавляете своего рода баннер или подобную вещь поверх таблицы, которая распространена в эти дни, и Вы просто устанавливаете главную вставку таблицы к любой высоте, которой становится Ваш баннер/и т.д., когда это работает.

, Чтобы сделать это, необходимо использовать

tableView.contentInsetAdjustmentBehavior = .never

вызов: /

премия gotchya

не забывает почти всегда в эти дни, загрузку некоторой информации (пользовательскые изображения, описание, безотносительно) динамично, таким образом, Вы не можете установить такие значения к финалу необходимое значение, пока информация не прибывает. Другой gotchya.: /

, Таким образом, у Вас был бы код как:

func setTableOffsetOnceFlagAreaSizeIsKnown() {
    tableView.contentInset.top = yourSpecialFlagViewUpTop.bounds.height
}

override func viewDidLayoutSubviews() {
    setTableOffsetOnceFlagAreaSizeIsKnown()
}
0
ответ дан 22 November 2019 в 21:55
поделиться

Согласно документация Apple :

При присвоении представления этому свойству, устанавливает высоту того представления к ненулевому значению . Табличное представление уважает только высоту прямоугольника кадра Вашего представления; это корректирует ширину Вашего представления заголовка автоматически для соответствия ширине табличного представления.

Swift 5

, Если у Вас есть сгруппированный UITableView, где Вы хотите tableHeaderView:

Прежде, чем присвоить представление tableView.tableHeaderView, устанавливает высоту того представления к ненулевому значению, например:

// Set the initial height of your custom view to the smallest value  
myTableHeaderView.frame.size.height = .leastNonzeroMagnitude

// Assign your custom view to the header view
tableView.tableHeaderView = myTableHeaderView

// Set width constraint, height should grow based on your view. 
tableView.tableHeaderView!.widthAnchor.constraint(equalTo: tableView.widthAnchor).isActive = true

Никакая потребность в волшебстве с contentInsets или обрабатывающий методы делегата.

0
ответ дан 22 November 2019 в 21:55
поделиться

Проверьте, сгруппирован ли tableview/плоскость. В моем случае я изменил стиль на плоскость, и это работало. Теперь дополнительный интервал выше заголовка исчез.

0
ответ дан 22 November 2019 в 21:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: