Перекрытие UITableViewCell

Я хочу создать uitableview с перекрывающимися ячейками, как на изображении ниже. Проблема в том, что даже если я установил clipsToBounds = NO для представления содержимого ячейки, фальшивый заголовок ячейки (например, испанский, который будет перекрывать предыдущую ячейку) не отображается.

Кто-нибудь знает, как решить эту проблему?

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

Вот мой код:

- (UITableViewCell *)tableviewCellTournamentWithReuseIdentifier:(NSString *)identifier andPosition:(NSInteger)pos {
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
if (pos == 0) {
    cell.clipsToBounds = NO;
    cell.contentView.clipsToBounds = NO;
    cell.frame = CGRectMake(0, 0, tournamentsTableView.frame.size.width, CELL_HEIGHT);

    UIView* row = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tournamentsTableView.frame.size.width, CELL_HEIGHT)];
    row.clipsToBounds = NO;
    row.backgroundColor = [UIColor clearColor];

    UIView* topRow = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 10)];
    topRow.backgroundColor= [UIColor colorWithRed:210/255.0 green:131/255.0 blue:62/255.0 alpha:1.0];
    [row addSubview:topRow];

    UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, row.frame.size.width, CELL_HEIGHT-10)];
    label.backgroundColor = [UIColor colorWithRed:63*pos/255.0 green:71*pos/255.0 blue:113/255.0 alpha:1.0];
    label.font = [UIFont fontWithName:@"HelveticaNeue" size:14];
    label.tag = TOURNAMENT_NAME;
    label.layer.cornerRadius = 5;
    [row addSubview:label];

    [cell.contentView addSubview:row];
} else {
    cell.clipsToBounds = NO;
    cell.contentView.clipsToBounds = NO;
    cell.frame = CGRectMake(0, -10, tournamentsTableView.frame.size.width, CELL_HEIGHT);

    UIView* row = [[UIView alloc] initWithFrame:CGRectMake(0, -10, tournamentsTableView.frame.size.width, CELL_HEIGHT)];
    row.clipsToBounds = NO;
    row.backgroundColor = [UIColor clearColor];

    UIView* topRow = [[UIView alloc] initWithFrame:CGRectMake(0, -10, 100, 10)];
    topRow.backgroundColor= [UIColor colorWithRed:210/255.0 green:131/255.0 blue:62/255.0 alpha:1.0];
    [row addSubview:topRow];
    [cell bringSubviewToFront:tournamentsTableView];

    UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, row.frame.size.width, CELL_HEIGHT-10)];
    label.backgroundColor = [UIColor colorWithRed:63*pos/255.0 green:71*pos/255.0 blue:113/255.0 alpha:1.0];
    label.font = [UIFont fontWithName:@"HelveticaNeue" size:14];
    label.tag = TOURNAMENT_NAME;
    label.layer.cornerRadius = 5;
    [row addSubview:label];

    [cell.contentView addSubview:row];
}

return cell;

}

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


person dorin    schedule 18.09.2013    source источник
comment
Вы тоже пытались установить clipToBounds=NO в пользовательской ячейке? Не только в представлении содержимого ячейки.   -  person danypata    schedule 18.09.2013
comment
Я отредактировал свой вопрос с исходным кодом   -  person dorin    schedule 18.09.2013
comment
Посмотрите вокруг немного. Это проливает свет на ту же проблему:   -  person Anil    schedule 18.09.2013
comment
Глядя на ваши результаты, у меня сложилось впечатление, что вы используете UITableView Grouped?   -  person tdelepine    schedule 18.09.2013


Ответы (1)


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

добавить верхнюю строку в ячейку

UIView *topRow = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 10.0)];
topRow.backgroundColor= [UIColor colorWithRed:210/255.0 green:131/255.0 blue:62/255.0 alpha:1.0];
[cell.contentView addSubview:topRow];

затем добавьте основное содержимое в ячейку и просто переместите его вниз

UIView* row = [[UIView alloc] initWithFrame:CGRectMake(0.0, 10.0, tournamentsTableView.frame.size.width, CELL_HEIGHT)];
row.clipsToBounds = NO;
row.backgroundColor = [UIColor clearColor];
[cell.contentView addSubview:row];

наконец, избавьтесь от цвета фона ячейки, и вы почти добились своего эффекта.

cell.backgroundColor = [UIColor clearColor];
cell.contentView.backgroundColor = [UIColor clearColor];

Надеюсь, это поможет :)

person Joe Barbour    schedule 28.09.2014