Je ne trouve nulle part (moteurs de recherche, docs, ici, etc) qui montre comment créer des coins arrondis (en particulier dans une vue de tableau groupé) sur un élément qui clips également les sous-vues .UITableViewCell coins arrondis et sous-vues de clip
J'ai un code qui crée correctement un rectangle arrondi sur un chemin avec 4 arcs (les coins arrondis) qui a été testé dans la méthode drawRect: dans ma uitableviewcell sous-classée. Le problème est que les sous-vues, qui se trouvent être des uibuttons avec leurs vues d'images internes, n'obéissent pas au CGContextClip() que la uitableviewcell obéit.
Voici le code:
- (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];
}
Parce que ce cas particulier est statique (seulement montre en 1 ligne spécifique de boutons), je peux modifier les images utilisées pour les boutons pour obtenir l'effet désiré.
MAIS, j'ai un autre cas qui est dynamique. Plus précisément, une table groupée avec beaucoup de résultats basés sur la base de données qui montrera les photos qui peuvent être dans la première ou la dernière rangée avec des coins arrondis et doivent donc être découpées).
Donc, est-il possible de créer un CGContextClip() qui arrête aussi les sous-vues? Si c'est le cas, comment?
Il n'y a pas de réponse ici sur la question principale. Est-il possible d'obtenir CGContextClip() pour affecter les sous-vues? –
C'est aussi simple ... http://stackoverflow.com/a/20410857/294884 que CLIP TOUS LES SUBVIEWS aussi. – Fattie