2013-05-18 3 views
0

Я хочу установить различную непрозрачность для разных пикселей в UIView.Проблема с непрозрачностью UIView

Итак, мне нужно найти реализации для метода [self setProperOpacity:myView forX:x forY:y]; в коде (так что функция должна установить значение альфа для соответствующих пикселей):

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

Что вы пытаетесь достичь? Какая-то маска? Маскирование изображения под представлением? – Wain

+0

да, если вы можете предоставить такой код, это было бы замечательно –

ответ

0

I «Предполагая, что ваш взгляд изначально заполнен черным цветом, и вы хотите очистить некоторые пиксели до прозрачности. Для этого вам необходимо использовать основные графические методы. В зависимости от того, где вы хотите, чтобы код и как вы хотите сделать это ниже код может быть использован либо в 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) нарисовать изображение в контексте, а затем зациклиться на пикселях, чтобы не должен был быть прозрачным и рисовать их другим цветом, используя код выше ,

+0

, но в этом случае я думаю, что изображение будет помечено серыми пятнами, но мне нужно, чтобы альфа была исходными пикселями изображения –