Я нигде не могу найти ничего (поисковые системы, документы, здесь и т. Д.), В котором показано, как создавать закругленные углы (особенно в сгруппированном табличном представлении) для элемента, который также обрезает подпредставления.
У меня есть код, который правильно создает закругленный прямоугольник из пути с 4 дугами (закругленными углами), который был протестирован в методе drawRect: в моей подклассной ячейке uitableviewcell. Проблема в том, что подпредставления, которые являются uibutton с их внутренними представлениями uiimage, не подчиняются CGContextClip (), которому подчиняется uitableviewcell.
Вот код:
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat radius = 12;
CGFloat width = CGRectGetWidth(rect);
CGFloat height = CGRectGetHeight(rect);
// Make sure corner radius isn't larger than half the shorter side
if (radius > width/2.0)
radius = width/2.0;
if (radius > height/2.0)
radius = height/2.0;
CGFloat minx = CGRectGetMinX(rect) + 10;
CGFloat midx = CGRectGetMidX(rect);
CGFloat maxx = CGRectGetMaxX(rect) - 10;
CGFloat miny = CGRectGetMinY(rect);
CGFloat midy = CGRectGetMidY(rect);
CGFloat maxy = CGRectGetMaxY(rect);
[[UIColor greenColor] set];
CGContextBeginPath(context);
CGContextMoveToPoint(context, minx, midy);
CGContextAddArcToPoint(context, minx, miny, midx, miny, radius);
CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius);
CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius);
CGContextClip(context);
CGContextFillRect(context, rect);
[super drawRect:rect];
}
Поскольку этот конкретный случай является статическим (отображается только в 1 ряду кнопок), я могу редактировать изображения, используемые для кнопок, чтобы получить желаемый эффект.
ОДНАКО , у меня есть другой случай, который является динамическим. В частности, сгруппированная таблица с большим количеством результатов на основе базы данных, в которой будут показаны фотографии, которые могут находиться в первом или последнем ряду с закругленными углами и, следовательно, должны быть обрезаны).
Итак, возможно ли создать CGContextClip (), который также обрезает подпредставления? Если да, то как?