Non riesco a trovare nulla da nessuna parte (motori di ricerca, documenti, ecc.) Che mostra come creare angoli arrotondati (specialmente in una vista tabella raggruppata) su un elemento che ritaglia anche le sottoview .UITableViewCell angoli arrotondati e sottocartelle clip
Ho codice che crea correttamente un rettangolo arrotondato su un percorso con 4 archi (gli angoli arrotondati) che è stato testato nel drawRect: metodo nella mia sottoclasse uitableviewcell. Il problema è che le sottoview, che capita di essere uibutton con le loro immagini utente interne, non obbediscono alla CGContextClip() che la uitableviewcell obbedisce.
Ecco il codice:
- (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];
}
Poiché questo caso specifico è statica (mostra solo in 1 riga specifica di pulsanti), posso modificare le immagini utilizzate per i pulsanti per ottenere l'effetto desiderato.
TUTTAVIA, ho un altro caso dinamico. In particolare, una tabella raggruppata con molti risultati basati su database che mostreranno le foto che potrebbero trovarsi nella prima o nell'ultima riga con angoli arrotondati e quindi devono essere ritagliate).
Quindi, è possibile creare un CGContextClip() che consente di ritagliare anche le sottoview? Se é cosi, come?
Non c'è risposta qui sulla domanda principale .. È possibile ottenere CGContextClip() per influenzare le visualizzazioni secondarie? –
È così semplice ... http://stackoverflow.com/a/20410857/294884 che CLIP TUTTE LE SOTTOSCRIZIONI. – Fattie