【发布时间】:2014-01-31 19:23:27
【问题描述】:
在我的项目中,我需要使用AsyncImageView 来加载图像。我也希望这些图像是圆形的。图像主要出现在表格视图中,所以我不能在AsyncImageView's 层上使用圆角,因为这对应用程序的性能有非常非常负面的影响。
所以我决定做的是创建一个AsyncImageView的子类(因为我的项目中的其他视图需要原始的非圆形AsyncImageView),称为RoundedAsyncImageView,其中我只实现了drawRect方法如下:
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
CGPathRef clippath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:17].CGPath;
CGContextAddPath(ctx, clippath);
CGContextClip(ctx);
[self.image drawInRect:rect];
CGContextRestoreGState(ctx);
}
我有用于应该出现这个圆形图像的单元格的 xib,它是用 IB 创建的。所以我只是将UIImageView元素的自定义类更改为RoundedAsyncImageView,并将图像视图的IBOutlets更改为RoundedAsyncImageView。现在的问题是 drawRect 没有被调用。任何想法为什么?
编辑:
我读到UIImageView 子类不调用drawRect,我应该简单地在常规UIView 子类中绘制图像。问题是,我实际上不能这样做,因为我需要AsyncImageView 的异步加载图像功能。有没有办法做到这一点?
【问题讨论】:
标签: ios uiimageview drawrect rounded-corners