No encuentro nada en ninguna parte (motores de búsqueda, documentos, aquí, etc.) que muestre cómo crear esquinas redondeadas (especialmente en una vista de tabla agrupada) en un elemento que también recorta las subvistas .UITableViewCell esquinas redondeadas y subvistas de clip
Tengo un código que crea correctamente un rectángulo redondeado fuera de una ruta con 4 arcos (las esquinas redondeadas) que se ha probado en el método drawRect: en mi uitableviewcell subclasificado. El problema es que las subvistas, que resultan ser uibuttons con sus uiimageviews internas, no obedecen al CGContextClip() que obedece uitableviewcell.
Aquí está el código:
- (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];
}
Debido a que este caso específico es estática (sólo se nota en 1 fila específica de botones), puedo editar las imágenes que se utilizan para los botones para conseguir el efecto deseado.
SIN EMBARGO, tengo otro caso que es dinámico. Específicamente, una tabla agrupada con muchos resultados basados en bases de datos que mostrarán fotos que pueden estar en la primera o última fila con esquinas redondeadas y, por lo tanto, deben recortarse).
Entonces, ¿es posible crear un CGContextClip() que también recorta las subvistas? ¿Si es así, cómo?
No hay respuesta aquí en la pregunta principal. ¿Es posible hacer que CGContextClip() afecte las subvistas? –
Es así de simple ... http://stackoverflow.com/a/20410857/294884 QUE HACE CLIP TODAS LAS EVALUACIONES TAMBIÉTICAS. – Fattie