UIImage - решить, какие углы должны быть скруглены - PullRequest
0 голосов
/ 09 ноября 2011

Я знаю, что это обычная проблема, но я не видел никакого решения этой проблемы, отсюда и эта тема.

Мы все создали сгруппированный UITableView и попытались установить cell.imageView в изображение. Но что происходит? Первая и последняя ячейка становятся некрасивыми, потому что они прямоугольные.

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

Метод, подобный этому:

cell.imageView.image = [image setCornerRadiusLeftTop: 10.0 rightTop: 0 leftBottom: 0 rightBottom: 0];`

Есть ли кто-нибудь, кто делал что-то подобное?

Ответы [ 2 ]

0 голосов
/ 10 ноября 2011

Решение:

+ (CAShapeLayer *) roundedCornerOnImage: (UIImageView *)imageView onCorner: (UIRectCorner)rectCorner
{
    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imageView.bounds 
                                                   byRoundingCorners:rectCorner
                                                         cornerRadii:CGSizeMake(10.0, 10.0)];

    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame = imageView.bounds;
    maskLayer.path = maskPath.CGPath;

    return maskLayer;
}

Пример использования изображения в UITableViewCell:

if (indexPath.row == 0)
    cell.imageView.layer.mask = [Helper roundedCornerOnImage:cell.imageView onCorner:UIRectCornerTopLeft];
else if (indexPath.row == self.arrayPeople.count - 1)
    cell.imageView.layer.mask = [Helper roundedCornerOnImage:cell.imageView onCorner:UIRectCornerBottomLeft];
0 голосов
/ 09 ноября 2011

Одним из решений будет использование маски слоя :

cell.imageView.layer.mask = layerMask;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...