Квадрат вместо закругленных углов в сгруппированном стиле UITableViewCell - PullRequest
4 голосов
/ 08 октября 2011

Я хочу иметь квадратные углы для моих сгруппированных ячеек таблицы вместо закругленных углов по умолчанию, и я не просто хочу использовать изображение для достижения этого эффекта. Возможно ли это?

Ответы [ 4 ]

13 голосов
/ 08 октября 2011

Проще всего, в вашем tableView:cellForRowAtIndexPath: использовании

cell.backgroundView = [[[UIView alloc] initWithFrame:cell.bounds] autorelease];
1 голос
/ 16 апреля 2013

Принятые ответы работают хорошо, но, к сожалению, удаляют разделительные линии между ячейками.Если у вас есть TableCellBackground.png размером 3x3 пикселя, с двумя верхними рядами пикселей белого цвета и самым низким третьим рядом серого цвета (в соответствии с цветом разделителя), вы можете сделать:

    // To square the corners, we replace the background view of the top and bottom cells.
    // In addition, the top cell needs a separator, which we get from TableCellBackground.png.
    UIImage *stretchableImage = [UIImage imageNamed:@"TableCellBackground.png"];
    UIImage *cellImage = [stretchableImage resizableImageWithCapInsets:UIEdgeInsetsMake(1, 1, 1, 1)];
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:cell.bounds];
    imageView.image = cellImage;
    cell.backgroundView = imageView;
1 голос
/ 08 октября 2011

Вы можете установить backgroundView и selectedBackgroundView UITableViewCell для пользовательского UIView, который вы создаете сами. Это должно дать вам квадратную клетку.

0 голосов
/ 16 сентября 2013

Сначала установите желаемое представление фона вашей ячейки, а затем установите выделенное представление фона ячейки (с теми же границами, что и у фона ячейки)

вы можете указать свойство cornerRadius, чтобы вы могли установить округлениепо желанию углов, я пропустил это свойство в моем случае

Вот код для обоих:

        UIView *bg = [[UIView alloc] initWithFrame:cell.bounds];
        bg.backgroundColor = [UIColor colorWithRed:0.980 green:0.988 blue:0.984 alpha:1];
        bg.layer.borderColor = [UIColor colorWithRed:0.827 green:0.827 blue:0.835 alpha:1].CGColor;
        bg.layer.borderWidth = kCellBorderWidth;
//        bg.layer.cornerRadius= kCellBorderRadius;
        cell.backgroundView = bg;

        // to make cell selection square and not round (which is by default)
        UIView *bg_selected = [[UIView alloc] initWithFrame:cell.bounds];
        bg_selected.backgroundColor = [UIColor lightGrayColor];
        bg_selected.layer.borderColor = [UIColor colorWithRed:0.827 green:0.827 blue:0.835 alpha:1].CGColor;
        bg_selected.layer.borderWidth = kCellBorderWidth;
        cell.selectedBackgroundView = bg_selected;
...