Удалите лишние отступы над заголовками табличных представлений в iOS 15
Как удалить лишнюю прокладку выше
UITableView
заголовки разделов, которые начали появляться в iOS 15?
10 ответов
Начиная с iOS 15,
UITableView
содержит новое свойство с именем sectionHeaderTopPadding
который определяет количество отступов над заголовком каждого раздела.
tableView.sectionHeaderTopPadding = 0.0
Для применения изменений повсюду в приложении
if #available(iOS 15.0, *) {
UITableView.appearance().sectionHeaderTopPadding = 0
}
желательно в AppDelegate.
Поместите это в основной файл didFinishLaunchingWithOptions, чтобы исправить это глобально:
if (@available(iOS 15.0, *))
{
UITableView.appearance.sectionHeaderTopPadding = 0;
}
Глобальный способ для obj-c:
if (@available(iOS 15.0, *)) {
[[UITableView appearance] setSectionHeaderTopPadding:0.0f];
}
Это новое свойство экземпляра UITableView в iOS 15. https://developer.apple.com/documentation/uikit/uitableview/3750914-sectionheadertoppadding .
sectionHeaderTopPadding
который указывает количество отступов над каждым заголовком раздела.
Чтобы удалить заполнение, используйте код ниже
if #available(iOS 15.0, *) {
self.tableView.sectionHeaderTopPadding = 0.0
}
Чтобы удалить отступы отовсюду в приложении, используйте приведенный ниже код в
AppDelegate
if #available(iOS 15.0, *) {
UITableView.appearance().sectionHeaderTopPadding = 0.0
}
Поместите это в основной файл didFinishLaunchingWithOptions, чтобы исправить это глобально.
if (@available(iOS 15.0, *)) {
[[UITableView appearance] setSectionHeaderTopPadding:0.0f];
}
if #available(iOS 15.0, *) {
UITableView.appearance().sectionHeaderTopPadding = 0.0
}
Если у вас, как и у меня, возникают проблемы с некоторыми сгруппированными стилями tableViews после установки
sectionHeaderTopPadding
но все еще видя этот раздражающий пробел в первом разделе, просто добавьте следующее в свой VC
viewDidLoad
:
tableView.tableHeaderView = UIView(frame: CGRect(x: .zero, y: .zero, width: .zero, height: CGFloat.leastNonzeroMagnitude))
Найдено здесь
Для версии Objective C вы можете использовать приведенный ниже код;
if (@available(iOS 15.0, *)) {
[_tableViewC setSectionHeaderTopPadding:0.0];
};
где tableViewC - это целевое табличное представление.
Для Xamarin Forms вы можете добавить следующий код после вызова LoadApplication в FinishedLaunching:
if(UIDevice.CurrentDevice.CheckSystemVersion(15, 0))
{
void_objc_msgSend_nfloat(UITableView.Appearance.Handle, ObjCRuntime.Selector.GetHandle("setSectionHeaderTopPadding:"), 0);
}
Я пропустил проверку версии, и приложение вышло из строя на чем-либо ниже iOS15 без получения отчета о сбое через TestFlight.
Если вы используете Xcode 15 с симулятором с iOS 15, я решаю это с помощью этого фрагмента в viewDidLoad на ViewController, если вам нужно установить конкретный tableView или для всех uitableView, вы можете установить это:
if #available(iOS 15.0, *) {
UITableView.appearance().sectionHeaderTopPadding = 0
}
в основном