我有一个包含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);
}
但是,图像不是圆形,而是常规矩形。有什么问题?
答案 0 :(得分:0)
您拥有的两个选项要么在UIImageView上标记一个cornerRadius,以使其显示为圆形,或者从UIView的子视图中删除UIImageView。
在第一种情况下,您不需要拥有自定义绘图,因为您想要的圆形图片将使用cornerRadius(并启用clipsToBounds)在UIImageView中绘制。
在第二部分你根本不需要UIImageView,只需要一个UIImage。 UIImageView只是一种在屏幕上显示UIImage的方法,如果在您的视图的自定义绘图中处理了这些内容,那么您就不需要UIImageView。
鉴于这些选项,我相信带有cornerRadius的UIImageView将是最有效的。自定义绘图需要一些UIImageView为您处理的处理器时间。