Как перекрывать UITableViewCells?
Если вы посмотрите на скриншот, то заметите, что каждый UITableViewCell перекрывается на 20% от верхней части до верхней ячейки таблицы.
Есть ли способ, которым мы можем перекрывать клетки?
3 ответа
Я никогда не пробовал, но такая логика будет работать. Помните, что вы не получите никакого прикосновения в перекрывающейся области.
1) Добавьте свое подпредставление к cell.contentView
, убедитесь, что высота подпредставления больше, чем rowHeight
вашего tableView.
float overlapHeight = 10.0;
subView.frame = CGRectMake(0.0, -10.0,
your_subview_width, rowHeight + overlapHeight);
2) Добавьте этот код, чтобы ваша ячейка не обрезала содержимое за пределами своего фрейма.
cell.clipsToBounds = NO;
cell.contentView.clipsToBounds = NO;
3) Теперь ячейки будут перекрываться, но вокруг границ ячейки будет метка клипа. Чтобы избежать этого, реализуем делегатскую функцию willDisplayCell
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = [UIColor clearColor];
}
Эффект перекрытия может быть достигнут визуально, составив ячейку из двух частей: узкой сверху и широкой снизу. Нижняя часть проста: это серый прямоугольник с компонентом текста / изображения внутри. Хитрость в части сверху.
Высота верхней части равна высоте всей цветной вкладки. Ваша программа может поместить туда одно из двух изображений: либо вкладку поверх узкой серой полосы, представляющей нижнюю часть предыдущей ячейки, либо вкладку поверх коричневого фона. Внутри вашего tableView:cellForRowAtIndexPath:
проверить row
, Если это ноль, выберите изображение с коричневым фоном; в противном случае выберите изображение с серой полосой на заднем плане сверху.
Не нужно перекрывать клетки. Ваша верхняя ячейка должна выглядеть так:
и все остальные ячейки должны выглядеть так:
Ваш tableFooterView
должна быть просто серая полоса ("низ" ячейки)