4

asプロパティを持つUITableViewCellサブクラスがあります。 drawRectで画像を描画したいのですが、これはテーブルビューのセルなので効率よくしたいです。 UIImage

画像をそのまま描画する方法を知っています:

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

    [self.image drawInRect:rect];
} 

しかし、角を丸くして画像を描画し、効率を維持するにはどうすればよいでしょうか?

ところで、レイヤーのコーナー半径を使用して設定したくないのはUIImageView、継ぎ目でパフォーマンスが低下するためです。

4

1 に答える 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);
于 2012-05-30T10:51:27.597 に答える