Четкий ответ о том, как маскировать UIView как UITableViewCell selectedBackgroundView

Я прочитал и попробовал несколько ответов, которые нашел на StackOverflow. Я также читал и пробовал кое-что из блогов, но, похоже, ничего не дает того, что я ищу.

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

Этот метод прекрасно работает на Plain UITableViews; не так хорошо на Grouped. В сгруппированном UITableView1-я и последняя ячейка не соответствуют границам клипа/маски, как показано на снимках экрана ниже.

Я знаю, что невозможно скруглить только верхний -левый и верхний -правый углы.

Я хочу сделать это строго по коду, без изображений.

Вопрос

Кто-нибудь знает хороший небольшой обходной путь для изменения selectedBackgroundViewцвета UITableViewCell, используя только UIView, а не изображения, И чтобы первая и последняя ячейки соответствовали закругленному углу границы?

Пример

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString * CellIdentifier = @"Cell";
    WCSBadgedCell   * cell = [[WCSBadgedCell alloc] initWithStyle:UITableViewCellStyleSubtitle andBadgeStyle:0 reuseIdentifier:CellIdentifier]; 
    if (cell == nil) {
        cell = [[WCSBadgedCell alloc] initWithStyle:UITableViewCellStyleDefault andBadgeStyle:0 reuseIdentifier:CellIdentifier];
    }

    UIView *bgColorView = [[UIView alloc] init];
    [bgColorView setBackgroundColor:DARKBROWN];
    [bgColorView setClipsToBounds: YES];
    [cell.layer setMasksToBounds:YES];
    [cell setSelectedBackgroundView:bgColorView];

    [cell.textLabel setText: @"Testing a Cell"];

    return cell;
}

Скриншоты

enter image description here

enter image description here

enter image description here

Решение

Я принял ответ CodaFis , потому что он добавил комментарий, указывающий на довольно хорошее (, но длинное)решение. Мне пришлось немного переделать, но, в конце концов, теперь у меня есть нужные мне selectedBackgroundView, которые закругляют углы в 1-й и последней ячейках, еще раз спасибо!

Вот пример того, как я этого добился.

8
задан Community 23 May 2017 в 12:01
поделиться