我有一个包含不规则切片的'馅饼'的UIView,我需要它们是可点击的区域。通过大量的反复试验,我写了一个方法来制作馅饼,但现在我对如何将这些切片制作成区域感到茫然。目前这个方法返回void所以我需要修改以返回一些内容,比如CGPath?我想我真的很困惑的是如何把我拥有的东西放进CGPath并返回它。有什么建议?谢谢!
-(void)addClickableRegion:(float)beginDegrees to:(float)endDegrees withContext:(CGContextRef)ctx withRadiusOf:(int)rad{
int x = self.bounds.size.height / 2;
int y = self.bounds.size.width / 2;
float red = (arc4random() % 255)/255.0;
float green = (arc4random() % 255)/255.0;
float blue = (arc4random() % 255)/255.0;
CGContextMoveToPoint(ctx, x, y);
CGContextAddArc(ctx, x, y, rad, (beginDegrees) * M_PI/180.0, (endDegrees) * M_PI/180.0, 0);
CGContextSetRGBFillColor(ctx, red, green, blue, 1.0);
CGContextFillPath(ctx);
CGContextClosePath(ctx);
}
答案 0 :(得分:1)
您已经在创建路径,您只是在上下文中创建它们而不是创建它们然后将它们添加到上下文中。你不需要这样做。您可以使用CGPathCreateMutable
,CGPathAddArc
和CGContextAddPath
。
您也可以通过UIBezierPath
或直接使用bezierPathWithCGPath:
(然后从中获取CGPath
)。
而且,一旦你有更好的路径,就可以在它们上面调用containsPoint:
来进行测试。