Вертикальное пространство между UITableViewCells после установки backgroundView в ячейке - PullRequest
3 голосов
/ 24 марта 2011

Я реализую UITableViewCells, которые имеют настраиваемый фон и расширяются при нажатии.

Я устанавливаю настраиваемое представление как мой UITableViewCells backgroundView: (в RowForIndexPath)

if (cell == nil) {
    CGRect f = CGRectMake(0.0f, 0.0f, 300.0f, 50.0f);

    cell = [[UITableViewCell alloc] initWithFrame:f reuseIdentifier:cellIdentifier];

    UIView *back = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 10.0f, 300.0f, 50.0f)];
    back.layer.cornerRadius = 8.0f;
    [back setBackgroundColor:[UIColor blackColor]];

Это прекрасно работает, установив backgroundView вместо contentView, мой backgroundView масштабируется, чтобы вместить новый размер ячейки после ее расширения (изменение высоты в heightForRowAtIndexPath после касания).

Теперь моя проблеманесколько пикселей по вертикали между моими клетками.Использование вышеупомянутого подхода приведет к отображению округлых черных ячеек «спина к спине».

Есть ли способ добавить вертикальное пространство между ячейками или есть совершенно другой подход, который я могу использовать дляполучить желаемый вид моих клеток?

Заранее спасибо.

1 Ответ

3 голосов
/ 11 января 2012

Чтобы отобразить пробел между ячейками и избежать проблемы «спина к спине», вы можете добавить UIView со следующим кадром CGRectMake(0, 0, 320, 1) и фоном, установленным на светло-серый для стандарта разделитель ячеек или, если вы просто хотите добавить отступ, вы можете сделать фон прозрачным.

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

UIView *cellSeparator = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320 ,1)];
[cellSeparator setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin |
                                   UIViewAutoresizingFlexibleRightMargin | 
                                   UIViewAutoresizingFlexibleWidth];       
[cellSeparator setContentMode:UIViewContentModeTopLeft];    
[cellSeparator setBackgroundColor:[UIColor lightGrayColor]];
[cell addSubview:cellSeparator];
[cellSeparator release];

Причина, по которой я установил cellSeparator в верхней части ячейки, заключается в том, что эффект действительно для ячеек, попадающих между первой и последней строками. Также важно установить autoresizingMask и contentMode, чтобы убедиться, что разделитель ячеек корректно корректируется при изменении размера на UITableViewCell. Если у вас есть какие-либо элементы в ячейке, которые начинаются с x=0 y=0, вам необходимо переместить их вниз по высоте разделителя ячеек, а также, возможно, некоторые дополнительные пиксели для заполнения, чтобы разделитель не проходил через элементы в ячейке .

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