Удалите лишние отступы над заголовками табличных представлений в 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
                }

в основном

Другие вопросы по тегам