UIImage没有剪切路径剪辑

时间:2014-01-31 14:56:11

标签: ios uiimage drawrect rounded-corners

我有一个包含UIImageView的UIView子类。我希望图像显示为圆形,所以我这样做了:

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextSaveGState(ctx);
    CGPathRef clippath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:17].CGPath;
    CGContextAddPath(ctx, clippath);
    CGContextClip(ctx);
    [self.imageView.image drawInRect:rect];
    CGContextRestoreGState(ctx);
}

但是,图像不是圆形,而是常规矩形。有什么问题?

1 个答案:

答案 0 :(得分:0)

您拥有的两个选项要么在UIImageView上标记一个cornerRadius,以使其显示为圆形,或者从UIView的子视图中删除UIImageView。

在第一种情况下,您不需要拥有自定义绘图,因为您想要的圆形图片将使用cornerRadius(并启用clipsToBounds)在UIImageView中绘制。

在第二部分你根本不需要UIImageView,只需要一个UIImage。 UIImageView只是一种在屏幕上显示UIImage的方法,如果在您的视图的自定义绘图中处理了这些内容,那么您就不需要UIImageView。

鉴于这些选项,我相信带有cornerRadius的UIImageView将是最有效的。自定义绘图需要一些UIImageView为您处理的处理器时间。