Устранить разделитель tablefooterview uitableview

У меня есть uitableview с tablefooterview. Я хотел бы использовать разделители ячеек в представлении таблицы, но хотел бы избавиться от разделителя ширины полного экрана, помещенного по умолчанию между tableview и tablefooterview. я пытался

if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } 

а также

 cell.separatorInset = UIEdgeInsetsMake(0, cell.bounds.size.width, 0, 0); 

но не работает

Взгляните на эту примерную реализацию.
Вы можете видеть, что UITableView с plain стилем действительно освобождает последний разделитель, если установлен footerView.

(Оранжевый вид – это footerView, и над ним нет разделителя)
Конечно, в Grouped tableView это не работает, как обсуждалось в комментариях по вашему вопросу.

введите описание изображения здесь

https://gist.github.com/bartekchlebek/2b05b5ddcc3efec3f514

 #import "ViewController.h" @interface ViewController () <UITableViewDataSource> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain]; tableView.dataSource = self; tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 40)]; footerView.backgroundColor = [UIColor orangeColor]; tableView.tableFooterView = footerView; [self.view addSubview:tableView]; } #pragma mark - UITableViewDataSource - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ID"]; cell.textLabel.text = [NSString stringWithFormat:@"Row: %@", @(indexPath.row)]; return cell; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 20; } @end 

Изменить: я обнаружил, что гораздо более простой способ избежать разрыва между последней секцией и нижним колонтитулом таблицы – реализовать heightForFooterInSection и вернуть очень маленькое значение, которое не равно 0. Это приведет к тому, что ничего не будет видно.

По какой-то причине возврат 0 не подавляет рендеринг нижних колонтитулов раздела в виде таблицы сгруппированным стилем, и он попытается отобразить нижний колонтитул с 1 точкой. Есть еще одна дискуссия о StackOverflow об этом.

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return CGFLOAT_MIN; } 

Я смог выполнить это в том, что кажется слегка взломанным, но, похоже, он работает нормально.

Мой взлом – просто разместить фактическое представление нижнего колонтитула, которое вы хотите внутри представления обертки, с позицией кадра (0, -1).

Допустим, у вас есть представление нижнего колонтитула таблицы, которое вы хотите использовать, класс MyTableFooterView.

В этом случае вы можете сделать что-то вроде этого:

 //This is the view we will actually add as the table footer //We make it one point shorter since the content will be shifted up //one point out of its frame CGRect footerFrame = CGRectMake(0, 0, self.tableView.width, myFooterHeight-1); UIView* tableFooterWrapper = [[UIView alloc] initWithFrame:footerFrame]; //This is the view that we are trying to use as a table footer. //We place it 1 point up inside the wrapper so it overlaps that pesky 1-point separator. CGRect contentFrame = CGRectMake(0, -1, self.tableView.width, myFooterHeight); UIView* footerContent = [[MyTableFooterView alloc] initWithFrame:contentFrame]; //Make sure the footer expands width for to other screen sizes footerContent.autoresizingMask = UIViewAutoresizingFlexibleWidth; [tableFooterWrapper addSubview:footerContent]; self.tableView.tableFooterView = tableFooterWrapper; 

Это работает надежно для меня. Возможно, что есть более идиоматический способ, но я еще не встречал его.

Используйте следующий код

 tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 
  • Как изменить размер UITextView, а затем UITableViewCell на основе содержимого UITextView
  • Тени сохраняются в UITableView после reloadSections:
  • iOS: «NSInternalInconsistencyException», причина: «попытаться удалить строку 1 из раздела 4, но перед обновлением всего 3 раздела»,
  • Обновление ограничений подзаголовка ячеек
  • UITableView с проблемой прокрутки UITextView
  • Вызов cellForRowAtIndexPath из heightForRowAtIndexPath - чередуется?
  • Ошибка NSFetchedResultsController - возможно, из-за предупреждения о памяти
  • TableView NSInternalInconsistencyException
  • как установить раздел с String @ "XYZ" в качестве первого раздела в виде таблицы
  • Swift3 - Как добавить целевое действие к UITableViewCell
  • NSMutableArray получает : непризнанный селектор, отправленный в экземпляр
  • Interesting Posts

    Версия пакета ошибок HockeyApp не соответствует

    Как программно настроить прокрутку UIScrollView вверху

    Храните кнопки одинаковой высоты для всех просмотров для iOS

    ios parse issue nstimer tutorial

    Проблемы с сбоем приложения в IOS 9 при блокировке и разблокировке?

    Что произойдет, если я использую AVAudioSessionCategoryOptionAllowBluetoothA2DP, а динамик bluetooth не поддерживает A2DP?

    UITextField в ячейке UITableView становится программным программным средством getFirstResponder

    Выровнять по правому краю текст PlaceHolder в UITextField

    Как узнать, является ли NSURLSessionConfiguration фоновой синхронизацией?

    Болты Apple Mach-O Linker Error

    Как зарегистрироваться для местных уведомлений OUTSIDE делегата приложения?

    В любом случае, чтобы заставить веб-представление PayPal вращаться в ландшафтном режиме?

    Как удалить эту черную навигационную панель на uiimage pickercontroller

    Обновление приложения для iPhone до выпуска

    Увеличение использования памяти

    Давайте будем гением компьютера.