角丸四角形を描画する次のコードがあります。
void ContextAddRoundedRect(CGContextRef ctx, CGRect rect, CGFloat radius) {
CGFloat minX = CGRectGetMinX(rect);
CGFloat maxX = CGRectGetMaxX(rect);
CGFloat minY = CGRectGetMinY(rect);
CGFloat maxY = CGRectGetMaxY(rect);
CGContextMoveToPoint(ctx, minX + radius, minY);
CGContextAddArcToPoint(ctx, maxX, minY, maxX, minY + radius, radius);
CGContextAddArcToPoint(ctx, maxX, maxY, maxX - radius, maxY, radius);
CGContextAddArcToPoint(ctx, minX, maxY, minX, maxY - radius, radius);
CGContextAddArcToPoint(ctx, minX, minY, minX + radius, minY, radius);
}
それを変換してCGMutablePathRef
、図面に a を使用できるようにします-[UIBezierPath containsPoint:]
(コメントで+bezierPathWithCGPath:
指定されているように、最初に使用して、ここで回答します)。
CGMutablePathRef
CGContext を直接描画するのではなく、使用することの深刻な/既知の欠点はありますか? 私の推測では、それはスターターではありませんが、何かが欠けている可能性があります。
(解放しなければならないことはわかっている)