Objective C - 在drawRect中绘制具有圆角的图像

4

我有一个继承自UITableViewCell的子类,并拥有一个UIImage属性。
我想在drawRect方法中绘制该图片,而且为了效率考虑,因为这是一个表格视图的单元格。

我知道如何将图片画出来:

-(void)drawRect:(CGRect)aRect 
{
    CGRect rect = self.bounds;

    [self.image drawInRect:rect];
} 

但是我该如何绘制带圆角的图像并保持高效呢?

顺便说一下,我不想使用 UIImageView 然后设置图层的圆角,因为它似乎会影响性能。

1个回答

16

你需要创建一个剪切路径:

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
CGPathRef clippath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:radius].CGPath;
CGContextAddPath(ctx, clippath);
CGContextClip(ctx);
[self.image drawInRect:rect];
CGContextRestoreGState(ctx);

您还可以设置底层核心动画层的cornerRadius属性,但在drawRect:方法中进行剪裁更加高效。 - Svein Halvor Halvorsen
首先,你尝试了什么?看一下CGContextDrawPathCGContextSetShadowWithColor,如果需要更多帮助再回来。 - Svein Halvor Halvorsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接