Добавление подпредставления, больше, чем cellHeight к UITableViewCell?

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

Таким образом, я настроил свою ячейку таблицы, генерировал мое изображение и добавил его к contentView ячейки:

// rowHeight for the UITableView is 45.0f

UIImage *image = [self createCellThumbnail: someImage];
UIImageView *thumbView = [[UIImageView alloc] initWithFrame: CGRectMake(150, -5, 55,55)];
thumbView.transform = CGAffineTransformMakeRotation(0.1f);
thumbView.image = image;

cell.clipsToBounds = NO;
cell.contentView.clipsToBounds = NO;

[cell.contentView addSubview: thumbView];

В то время как изображение 'переполнится' в ячейку ниже его, верхняя часть изображения всегда отсекается, как продемонстрировано здесь:

img

Кто-либо знает, возможно ли то, что я пытаюсь сделать, с текущим подходом?

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

Обновление:

Также попытались добавить следующее, напрасно:

cell.opaque = NO;
cell.contentView.opaque = NO;

cell.clearsContextBeforeDrawing = NO;
cell.contentView.clearsContextBeforeDrawing = NO;

cell.clipsToBounds = NO;    
cell.contentView.clipsToBounds = NO;

15
задан gre_gor 17 December 2015 в 12:00
поделиться

2 ответа

Мне кажется, что tableView отображает свою ячейку снизу вверх, поэтому ячейки над одной ячейкой перекрывают эту ячейку. Чтобы избежать этого, вам придется установить backgroundColor всех ячеек на + [UIColor clearColor] , чтобы вы не увидели проблемы перекрытия.

Но установка backgroundColor на очистку в -tableView: cellForRowAtIndexPath: не имеет никакого смысла. UIKit выполняет много действий с ячейкой перед ее отрисовкой, также он сбрасывает свойство backgroundColor ячейки.

Что нам нужно сделать, так это установить backgroundColor в более позднем состоянии. К счастью, есть - [UITableViewDelegate tableView: willDisplayCell: forRowAtIndexPath:] , который мы можем реализовать следующим образом:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = [UIColor clearColor];
}

Теперь мы устанавливаем backgroundColor непосредственно перед отрисовкой ячейки это работает.

15
ответ дан 1 December 2019 в 03:24
поделиться

У меня буквально вчера было противоположное: я создал настраиваемую ячейку таблицы и по какой-то причине у меня произошло переполнение, которого я не хотел. Мое решение состояло в том, чтобы добавить следующий код в мой класс контроллера представления:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{  
    return 175;
}

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

1
ответ дан 1 December 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: