Подтвердить что ты не робот

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

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

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

enter image description here

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

4b9b3361

Ответ 1

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

Ответ 2

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

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;
}

Ответ 3

Лучший способ получить пространство между двумя ячейками в 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]];

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

Ответ 4

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

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

Ответ 5

Цель - 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

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)

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

Ответ 6

Если кто-то ищет версию 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
}

Ответ 7

Для людей, которые ищут альтернативный способ отображения пробелов между ячейками без использования разделов, вы можете отображать альтернативные цвета и высоту, как показано ниже. Используйте 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;
    }
}

Ответ 8

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

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

Ответ 9

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

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

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

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

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

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

cell.selectionStyle = UITableViewCellSelectionStyleNone;

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

Ответ 10

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

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

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

Ответ 11

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

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

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

Ответ 12

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

Ответ 13

* РАБОТА С 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

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

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

Ответ 14

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

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

Ответ 15

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

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

Ответ 16

Мое простое решение с помощью 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))
}

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

Ответ 17

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

Ответ 18

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

Ответ 19

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

  • Создать пользовательский класс UITableViewCell
  • Создайте UIView в новом классе, это будет действовать как "baseContentView", и это будет немедленно дочерний элемент "UITableViewCell.contentView"
  • Отрегулируйте верхнюю "прописку" на "baseContentView" (это будет разделитель/пробел) из родительского представления (UITableViewCell.contentView)
  • Наследуйте все свои пользовательские классы из этого класса, а не UITableViewCell
  • Добавить все содержимое/подпрограммы в 'baseContentView', а не в self.contentView

Вы можете играть с "заполнением" в соответствии с вашими потребностями.

Ответ 20

-(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;

}

Ответ 21

Я использую как:

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 цветового кода:

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

Ответ 22

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 { возврат 100;       } } еще

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

}

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

Ответ 23

Вот мой метод с 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
}

Ответ 24

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

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

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