0

我最初有这段代码,用于在按钮上创建“底部突出显示”:

CGContextAddPath(context, highlightPath);
CGContextSetFillColorWithColor(context, [[UIColor colorWithWhite:1.0 alpha:0.5]CGColor]);
CGContextFillPath(context);

这将在与按钮相同的空间中绘制高光,但要低 1 个像素,并且效果很好,因为按钮不透明。但是,我现在有一些透明的,所以我需要从绘图区域中删除按钮后面的区域。

我尝试过使用EOClip来执行此操作,但无法弄清楚要使用哪种组合。按钮的路径称为buttonPath,高亮路径相同但低 1 个像素,称为highlightPath。我怎么能阻止它在里面绘制buttonPath,同时绘制到highlightPath?

编辑:

好的,所以这和切换第 2 行和第 3 行都会导致整个形状被着色,并且出现以下错误clip: empty path.

CGContextEOClip(context);
CGContextAddPath(context, buttonPath);
CGContextAddPath(context, highlightPath);
CGContextSetFillColorWithColor(context, [[UIColor colorWithWhite:1.0 alpha:0.5] CGColor]);
CGContextFillPath(context);
4

1 回答 1

1

从聊天中得出的结论是,您可以添加两条路径并使用奇偶填充模式进行填充以获得所需的结果

CGContextAddPath(context, buttonPath); 
CGContextAddPath(context, highlightPath); 
CGContextSetFillColorWithColor(context, [[UIColor colorWithWhite:1.0 alpha:0.5] CGColor]);
CGContextEOFillPath(context);
于 2013-05-27T10:39:54.157 回答