Как предоставить пространство между двумя ячейками в виде таблицы?

Я хочу пробел между двумя ячейками в виде таблицы,

Я хочу такую ​​ячейку,

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

Как я могу это сделать?

Вы можете создать разделы TableView также в UITableView … Эти методы являются обязательными, поэтому создавайте разделы, и в каждом разделе вы можете создать отдельную ячейку, как на картинке.

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

1.Вставьте номера ячейки, которые вам нужны, в виде разделов:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 3; // in your case, there are 3 cells } 

2. вернуть только 1 ячейку для каждой секции

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1; } 

3. установить высоту заголовка в секции, чтобы установить пространство между ячейками

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 10.; // you can have your own choice, of course } 

4. установите цвет фона заголовка, чтобы очистить цвет, поэтому он не будет выглядеть странным

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *headerView = [[UIView alloc] init]; headerView.backgroundColor = [UIColor clearColor]; return headerView; } 

Лучший способ получить пространство между двумя ячейками в TableView, объявить номера разделов, которые вы хотите в делетете метод numberofsections таким образом

Например, у вас есть массив из 10 объектов

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [array count]; //array count returns 10 } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1;// this should be one because it will create space between two cells if you want space between 4 cells you can modify it. } 

Тогда важный момент в методе делегата cellForRowAtIndexPath вам нужно использовать indexpath.section, но не indexpath.row

 cell.textLabel.text=[NSString stringWithFormat:@"%@",[array objectAtIndex:indexPath.section]]; 

То есть проверяет ваш табличный вид на пространство между двумя ячейками. Наслаждайтесь!

Ответ нескольких разделов будет работать, но он чрезвычайно хрупкий и не позволяет использовать фактические разделы. Вместо этого вы должны создать пользовательскую ячейку или собственный прототип ячейки, который просто имеет пробел внизу и / или сверху.

Используйте стойки и пружины в IB, чтобы поддерживать этот равномерный зазор, и используйте heightForRowAtIndexPath, чтобы вернуть высоту, которая включает пробел.

objective – C

  UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 3)];/// change size as you need. separatorLineView.backgroundColor = [UIColor whiteColor];// you can also put image here [cell.contentView addSubview:separatorLineView]; 

Swift 3 (это тоже будет работать и для Swift 4)

 var separatorLineView = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 3)) /// change size as you need. separatorLineView.backgroundColor = UIColor.white // you can also put image here cell.contentView.addSubview(separatorLineView) 

Это сработало для меня.

Если кто-то ищет версию Swift . Ну вот.

 func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return 10; // space b/w cells } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return items.count // count of items } func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let header = UIView() header.backgroundColor = UIColor.clearColor() return header } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 1 } 

Для людей, которые ищут альтернативный способ отображения пробелов между ячейками без использования разделов, вы можете захотеть показать альтернативные цвета и высоту, как показано ниже. Используйте clearColor для интервала.

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { tableView.separatorStyle = UITableViewCellSeparatorStyleNone; if (indexPath.row % 2 == 1) { static NSString *CellIdentifier = @"cellID1"; UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.backgroundColor = [UIColor colorWhite]; return cell; } else { static NSString *CellIdentifier2 = @"cellID2"; UITableViewCell *cell2 = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier2]; if (cell2 == nil) { cell2 = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2]; } cell2.backgroundColor = [UIColor clearColor]; return cell2; } } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row % 2 == 1) { return 40.0; } else { return 2.0; } } 

Добавьте эти строки в метод cellForRowAtIndexPath UITableViewDelegate перед возвратом ячейки.

 let separator = UIView(frame: CGRectMake(0, 0, cell!.bounds.size.width, 1)) separator.backgroundColor = UIColor.whiteColor() cell.contentView.addSubview(separator) 

Иногда вам действительно хотелось бы оставить табличное представление разделенным в строках и иметь 1 раздел. Например, это может произойти, если вам нужно отобразить пользовательский заголовок для этого табличного представления, который остается на месте при прокрутке раздела.

То, что я рекомендовал бы сделать в этом случае, возвращает более высокий поплавок, чем нормальная высота ячейки в:

- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

а затем убедитесь, что стиль таблицы – это Plain, а разделитель ячейки – нет. Вы можете сделать это в самом XIB-файле или в коде:

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; self.tableView.style = UITableViewStylePlain;

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

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Это создаст впечатление пространства между ячейками, но в то же время удерживает их как строки в одном разделе (что иногда является тем, что вы хотите).

Я использовал простой и быстрый подход для этого (используя раскадровку)

  • Добавить UITableView в controller
  • Установите для стиля разделителя значение none (из инспектора атрибутов)
  • Установите высоту строки 5 очков больше сверху и снизу с нужной высоты
  • Теперь добавьте изображение в ячейку, прикрепите его слева и справа, но оставьте 5 очков пространства (для заполнения, например, ощущения), и установите фон изображения таким же, как фон, который вы хотите для ячейки

Когда таблица будет загружена, будет ощущение, что между ячейками есть пробелы.

Для интервала между ячейками, подобными тем, которые есть на вашем скриншоте, нет необходимости в настраиваемых ячейках (для их просмотра в любом случае, например, gradleиента bkg и т. Д., Это может быть хорошей идеей, но это не поможет для вашего интервала между клетки)

Чтобы достичь такого рода интервалов, просто используйте разные разделы в UITableView.

[EDIT] Все объяснено в Руководстве по программированию TableView от Apple (и это стоит его прочитать, поскольку в нем содержится много материала, который вы должны знать о табличных представлениях)

То, что вы пытаетесь достичь, визуально, будет таким же, как добавление содержимого каждой ячейки внутри контейнера View с серым фоном и наличие этого представления внутри ячейки. Я не думаю, что есть необходимость добавлять пробелы между ячейками.

Я не знаю, почему все ответы сложны. KIS, только с помощью раскадровки Я положил UIView внутри TableCell Content View; теперь высота UIView меньше высоты Content View, и все!

Играйте с цветом содержимого и цветом UIView, чтобы получить желаемый результат.

* РАБОТА С IOS 9 XCODE 7.3 *

Самый простой способ достичь этого – просто добавить этот код к методу cellForRowAtIndexPath.

  cell.separatorInset.left = 20.0 cell.separatorInset.right = 20.0 cell.separatorInset.top = 20.0 cell.separatorInset.bottom = 20.0 cell.layer.borderWidth = 3 cell.layer.cornerRadius = 20.0 cell.layer.borderColor = UIColor.flatSkyBlueColorDark().CGColor 

Затем перейдите на свою панель рассказов и нажмите на таблицу. Перейдите к инспектору идентификации и измените цвет фона View на любой цвет границы, установленный в методе. Вуаля! Играйте со значениями, чтобы получить желаемый результат. Надеюсь это поможет!

Примечание. Если вы используете библиотеку Chameleon, вы должны установить цвет фона для представления в коде, а не через плагин плагина. По какой-то причине цвет кажется затененным.

Хорошо то, что я сделал, просто имитирует пространство, создавая простую пользовательскую ячейку, которая немного больше, чем я хочу (cell + gap / 2), а затем помещаю содержимое моей ячейки во внутренний вид.

Затем поместите верхний вид вашей камеры в качестве цвета вашего фона и внутреннего вида в качестве вашей фактической ячейки. И у вас будет иллюзия наличия пространства между ячейками, когда на самом деле это просто большая ячейка с границами.

Мое простое решение с использованием Swift :

 // Inside UITableViewCell subclass override func layoutSubviews() { let f = contentView.frame let fr = UIEdgeInsetsInsetRect(f, UIEdgeInsetsMake(10, 10, 10, 10)) contentView.frame = fr } 

или один код строки

 override func layoutSubviews() { contentView.frame = UIEdgeInsetsInsetRect(contentView.frame, UIEdgeInsetsMake(10, 10, 10, 10)) } 

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

В Table View DataSource существует два метода с именем количество разделов и количество строк. В разделах return 3; В Rows return 1;

Вам не нужно назначать каждый раздел для каждой ячейки. Просто создайте UIView (контейнер) внутри своей ячейки, поставьте его в поле зрения ячейки. И мы компоновки компонентов, таких как ярлык, текст, изображение на этом контейнере.

Я предлагаю создать собственный базовый class UITableViewCell и использовать этот class, как показано ниже,

  1. Создание пользовательского classа UITableViewCell
  2. Создайте UIView в новом classе, это будет действовать как «baseContentView», и это будет немедленным дочерним элементом «UITableViewCell.contentView»,
  3. Отрегулируйте верхнюю «прописку» на «baseContentView» (это будет разделитель / пробел) из родительского вида (UITableViewCell.contentView)
  4. Наследуйте все свои пользовательские classы из этого classа, а не UITableViewCell
  5. Добавьте все содержимое / подпрограммы в «baseContentView», а не «self.contentView»,

Вы можете играть с «отступом» в соответствии с вашими потребностями.

 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return __titlesArray.count; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1; } -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 10; } -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *header = [[UIView alloc]init]; header.backgroundColor = [UIColor clearColor]; return header; } 

Я использую:

 override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return 194.0; } override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { cell.contentView.backgroundColor = UIColor.clearColor() let whiteRoundedView : UIView = UIView(frame: CGRectMake(0, 0, self.view.frame.size.width, 185)) whiteRoundedView.backgroundColor = UIColor( red: CGFloat(61.0/255.0), green: CGFloat(117.0/255.0), blue: CGFloat(147.0/255.0), alpha: CGFloat(1.0)) whiteRoundedView.layer.masksToBounds = false whiteRoundedView.layer.cornerRadius = 3.0 whiteRoundedView.layer.shadowOffset = CGSizeMake(-1, 1) whiteRoundedView.layer.shadowOpacity = 0.5 cell.contentView.addSubview(whiteRoundedView) cell.contentView.sendSubviewToBack(whiteRoundedView) } 

Получить значения RGB цветового кода:

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

1) сначала создайте 2 раздела в виде таблицы. 2) создать пустую ячейку. 3) создайте ячейку с данными, которые вы хотите отобразить. 4) используйте метод

  • (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath {if (indexPath.section == 0) {

    if (indexPath.row% 2! = 1) {return 15.0; } else {return 100; }} else

     if (indexPath.row % 2 != 1) { return 100.0; } else { return 15.0; } 

}

Это добавит пространство между ячейками. Это сработало для меня.

Вот мой метод с Swift 3:

В ViewDidLoad () добавьте:

 self.tableView.rowHeight = 500.0 

В таблице «CellForRowAt» добавьте следующее:

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) // Configure the cell... var actualContentView = UIView() actualContentView.frame = CGRect(x: 10, y: 10, width: cell.contentView.frame.width - 20, height: cell.contentView.frame.height - 20) actualContentView.backgroundColor = UIColor.blue cell.contentView.addSubview(actualContentView) return cell } 

Я проверил все ответы, но я думаю, что это самый простой способ:

  UIView * theContentView = [UIView alloc]initWithFrame:CGRectMake(0,gap,width,height)]; theContentView.backgroundcolor = [UIColor lightGrayColor];//contentColor cell.backgroundcolor = [UIColor blackColor];//gapColor [cell addSubview: theContentView] 

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

  • Выбор случайного объекта в NSArray
  • Не удалось добавить объекты в NSMutableArray в Objective C
  • Как я могу перебирать все подпункты UIView, а также их подзоны и их подпрограммы
  • Как добавить gradleиент к тексту UILabel, но не к фону?
  • Как использовать performSelector: withObject: afterDelay: с примитивными типами в cocoa?
  • Чтение аудио сэмплов через AVAssetReader
  • iOS 5 не позволяет сохранять загруженные данные в папке «Документы»?
  • Есть ли документальный способ настройки ориентации iPhone?
  • Лучший способ заставить NSRunLoop ждать установки флага?
  • установить фоновое изображение для всего приложения iPhone / iPad
  • Отправить уведомление в центр уведомлений о горном льве
  • Давайте будем гением компьютера.