0

我想为 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];

4

1 回答 1

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));
  }
}

答案基于这样一个想法,即您在尝试掩盖的其他图像(在后面的另一个视图中)的顶部有一个部分透明的视图。如果您只有图像并且您不想要多个视图,那么您可以(in drawRect)将图像绘制到上下文中,然后遍历应该透明的像素并使用上面的代码将它们绘制成另一种颜色。

于 2013-05-18T07:38:21.927 回答