我猜你的视图最初是用黑色填充的,你想将一些像素清除为透明。为此,您需要使用核心图形方法。根据您想要代码的位置以及您希望如何执行以下代码,可以在drawRect
视图中使用以下代码或创建掩码图像(您需要根据需要获取上下文):
CGContextRef ctx = ...;
CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor);
CGContextSetBlendMode(ctx, kCGBlendModeNormal);
CGContextFillRect(ctx, CGRectMake(0, 0, 320, 460));
// CGContextSetBlendMode(ctx, kCGBlendModeClear); // if you want to clear
CGContextSetFillColorWithColor(ctx, [[UIColor blackColor] colorWithAlphaComponent:0].CGColor);
for (int x = 0; x < 320; x++)
{
for (int y = 0; y < 460; y++)
{
CGContextFillRect(ctx, CGRectMake(x, y, 1, 1));
}
}
答案基于这样一个想法,即您在尝试掩盖的其他图像(在后面的另一个视图中)的顶部有一个部分透明的视图。如果您只有图像并且您不想要多个视图,那么您可以(in drawRect
)将图像绘制到上下文中,然后遍历不应该透明的像素并使用上面的代码将它们绘制成另一种颜色。