( Неверный принятый ответ . Когда вы пытаетесь LockBits(...)
на клонированном растровом изображении, в конце концов вы столкнетесь с ошибками GDI +.) Я вижу только 3 способа получить из этого:
new Bitmap(temp_filename)
Clone()
) и удалите первый битмап Ни один из ответов или обходных решений не помог мне. Большинство имело дело с самим tableView. То, что вызывало проблему для меня, было представлением, на которое я добавлял tableView или collectionView. Это - то, что зафиксировало его для меня:
SWIFT 5
edgesForExtendedLayout = []
я поместил это в свой viewDidLoad, и раздражающий разрыв ушел. Надежда это помогает.
если 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 это помогает.
Быстро 4 ответа...
, Если табличное представление выбрано в интерфейсном разработчике и в инспекторе атрибутов, "Сгруппированный" стиль выбран, введите следующий код в своем контроллере представления для устранения дополнительной проблемы пространства заголовка.
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return CGFloat.leastNonzeroMagnitude
}
если я добавляю tableHeaderView с действительно маленькой высотой, это решает проблему
let v = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: 0.000000001))
tableViewDocuments.tableHeaderView = v
set
override func viewDidLoad() {
self.tableView.delegate = self
self.tableView.dataSource = self
}
Вы просто делаете это
tableView.contentInsetAdjustmentBehavior = .never
, Tableviews имеют очень странное поведение в эти дни:
На устройствах с меткой (XR, и т.д.) это будет , не говоря о добавлении более вставки , НО ТОЛЬКО ЕСЛИ таблица запускается в физической вершине экрана.
, Если Вы запускаете НЕ наверху экрана, он не будет делать это, но
, Оба из thsoe случаев>> несвязанный < < к safeAreaInsets
......., который является очень сбивающий с толку
, Все это полностью не документировано ... можно потратить впустую часы, понимая это.
при необходимости в измерениях для запуска на самом деле с вершины экрана/таблицы,
на самом деле просто, пойдите:
tableView.contentInsetAdjustmentBehavior = .never
А хороший пример, очевидно, когда Вы добавляете своего рода баннер или подобную вещь поверх таблицы, которая распространена в эти дни, и Вы просто устанавливаете главную вставку таблицы к любой высоте, которой становится Ваш баннер/и т.д., когда это работает.
, Чтобы сделать это, необходимо использовать
tableView.contentInsetAdjustmentBehavior = .never
вызов: /
не забывает почти всегда в эти дни, загрузку некоторой информации (пользовательскые изображения, описание, безотносительно) динамично, таким образом, Вы не можете установить такие значения к финалу необходимое значение, пока информация не прибывает. Другой gotchya.: /
, Таким образом, у Вас был бы код как:
func setTableOffsetOnceFlagAreaSizeIsKnown() {
tableView.contentInset.top = yourSpecialFlagViewUpTop.bounds.height
}
override func viewDidLayoutSubviews() {
setTableOffsetOnceFlagAreaSizeIsKnown()
}
Согласно документация 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
или обрабатывающий методы делегата.
Проверьте, сгруппирован ли tableview/плоскость. В моем случае я изменил стиль на плоскость, и это работало. Теперь дополнительный интервал выше заголовка исчез.