Как дать пространство между двумя ячейками в табличном представлении? - PullRequest
47 голосов
/ 25 августа 2011

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

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

enter image description here

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

Ответы [ 24 ]

3 голосов
/ 25 августа 2011

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

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

[РЕДАКТИРОВАТЬ] Все объясняется В руководстве по программированию Apple TableView (и это стоит прочитать, так как оно содержит много вещей, которые вы должны знать о табличных представлениях)

2 голосов
/ 18 мая 2016

* РАБОТА С 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 вы должны установить цвет фона для представления в коде, а не через плагин раскадровки. По какой-то причине цвет кажется оттененным.

2 голосов
/ 17 марта 2016

Мое простое решение с использованием 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))
}

Результат enter image description here

2 голосов
/ 13 января 2016

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

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

2 голосов
/ 08 августа 2014

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

1 голос
/ 27 января 2015

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

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

0 голосов
/ 08 июля 2017

Вот мой метод со 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
}
0 голосов
/ 07 июля 2017

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

}

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

0 голосов
/ 17 января 2017

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

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 из:

enter image description here

0 голосов
/ 25 августа 2016
-(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;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...