Ios drawRect:我该如何做;倒扣;
我正在创建一个iOS用户界面,允许用户在现有图像中拾取一个矩形,并将该矩形的角拖动到所需的大小。我现在有四个自定义UIButton(30%alpha)和一个自定义视图(也有30%alpha),用于在四个角按钮之间绘制虚线 为了“改进”界面,我希望我的drawRect代码使图像的裁剪部分看起来“正常”,而裁剪区域之外的所有内容都被洗掉(填充白色,这将给我正确的效果,因为UIView设置为30%alpha) 显而易见的算法是:Ios drawRect:我该如何做;倒扣;,ios,Ios,我正在创建一个iOS用户界面,允许用户在现有图像中拾取一个矩形,并将该矩形的角拖动到所需的大小。我现在有四个自定义UIButton(30%alpha)和一个自定义视图(也有30%alpha),用于在四个角按钮之间绘制虚线 为了“改进”界面,我希望我的drawRect代码使图像的裁剪部分看起来“正常”,而裁剪区域之外的所有内容都被洗掉(填充白色,这将给我正确的效果,因为UIView设置为30%alpha) 显而易见的算法是: 用[UIColor whiteColor]填充整个图像 使用[UICol
有人对如何改进这一点有什么建议吗?您可以将混合模式设置为
kCGBlendModeCopy
,并使用clearColor
将像素的alpha重置为零。您也可以使用kCGBlendModeClear
,但我还没有测试过
您还可以将剪切路径设置为仅包含要清除的像素,并调用CGContextClearRect(gc,CGRectInfinite)
如果要使用带有孔的剪切遮罩,可以不使用CALayer
,也可以使用奇偶规则和CGRectInfinite
,比链接的答案简单一点:
CGContextSaveGState(GC); {
CGContextBeginPath(gc);
CGContextAddRect(gc, myRect); // or whatever simple path you want here
CGContextAddRect(gc, CGRectInfinite);
CGContextEOClip(gc);
// drawing code here is clipped to the exterior of myRect
} CGContextRestoreGState(gc);
kCGBlendModeClear
似乎成功了!谢谢!