je dessine une image arrondie dans une cellule UITableView comme ceci:Ajouter une ombre à UIImage dessiné dans le chemin arrondi
CGRect imageRect = CGRectMake(8, 8, 40, 40);
CGFloat radius = 3;
CGFloat minx = CGRectGetMinX(imageRect);
CGFloat midx = CGRectGetMidX(imageRect);
CGFloat maxx = CGRectGetMaxX(imageRect);
CGFloat miny = CGRectGetMinY(imageRect);
CGFloat midy = CGRectGetMidY(imageRect);
CGFloat maxy = CGRectGetMaxY(imageRect);
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);
CGContextClosePath(context);
CGContextClip(context);
[self.theImage drawInRect:imageRect];
Cela ressemble beaucoup, mais je voudrais ajouter une ombre à pour effet supplémentaire . J'ai essayé d'utiliser quelque chose le long des lignes de:
CGContextSetShadowWithColor(context, CGSizeMake(2, 2), 2, [[UIColor grayColor] CGColor]);
CGContextFillPath(context);
Mais cela ne fonctionne que lorsque l'image a des zones transparentes, si l'image est pas du tout transparent, il ne sera même pas dessiner une ombre autour de la frontière. Je me demande s'il y a quelque chose que je fais mal?
La seule chose que je pourrais prendre à partir de cette page a été que je peux utiliser CGContextSetShadow (contexte, CGSizeMake (1, -1), 3); au lieu de ce que j'utilisais auparavant. Je ne sais toujours pas comment je peux dessiner l'ombre en dehors des rects de l'image si l'image n'a aucune transparence. –