我想为UIView中的不同像素设置不同的不透明度。
所以,我需要在代码中找到方法[self setProperOpacity:myView forX:x forY:y];
的实现(这样函数应该为正确的像素设置alfa值):
for (int x = 0; x < 320; x++)
{
for (int y = 0; y < 460; y++)
{
[self setProperOpacity:myView forX:x forY:y];
}
}
我将对任何实施方法[self setProperOpacity:myView forX:x forY:y];
答案 0 :(得分:0)
我猜你的视图最初是用黑色填充的,你想要将一些像素清除为透明。为此,您需要使用核心图形方法。根据您希望代码的位置以及您希望如何执行此操作,以下代码可以在视图的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));
}
}
答案是基于这样一种想法,即你在其他图像的顶部(在后面的另一个视图中)有一个部分透明的视图,你试图掩盖它。如果您只是拥有图像并且不想要多个视图,那么您可以(在drawRect
中)将图像绘制到上下文中,然后遍历不应该透明的像素使用上面的代码将它们涂成另一种颜色。