Iphone 将阴影添加到以圆形路径绘制的图像中

Iphone 将阴影添加到以圆形路径绘制的图像中,iphone,uitableview,uiimage,draw,shadow,Iphone,Uitableview,Uiimage,Draw,Shadow,我正在UITableView单元格中绘制圆形图像,如下所示: 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(i

我正在UITableView单元格中绘制圆形图像,如下所示:

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];
这看起来很棒,但我想给它添加一个阴影以增加效果。 我试着用了一些大致如下的方法:

CGContextSetShadowWithColor(context, CGSizeMake(2, 2), 2, [[UIColor grayColor] CGColor]);
CGContextFillPath(context);
但这只适用于图像具有透明区域的情况,如果图像根本不透明,它甚至不会在边界周围绘制阴影


我想知道我是否做错了什么?

我可以想象,如果你正在绘制的图像没有透明区域,那么CoreGraphics会将整个图像解释为实体对象。然后,如果它试图绘制阴影,则阴影将绘制在图像边界之外,因此您将看不到它


提供了如何使用CoreGraphics绘制此类图形的良好示例。也许您可以尝试修改那里提供的代码,看看这是否解决了您的问题。

结果表明,正确的方法是剪裁UIImage本身,而不是路径。那么,这就是一个简单的问题:

CGContextSetShadow(...);
[self.theClippedImage drawInRect:...];

我能从那个页面上学到的唯一东西就是我可以使用CGContextSetShadow(context,CGSizeMake(1,-1),3);而不是我以前用的。如果图像没有任何透明度,我仍然不清楚如何在图像的矩形外绘制阴影。