2009-09-03 3 views
9

Я пытаюсь быстро инвертировать цвета существующего UIView (превратить в негатив, как в фотографическом негативе). Или взять цвета и отказаться от насыщения. Я думаю, что легче, чем манипулировать растровым изображением, - это взять еще один UIView, который является белым (или оттенком), и использовать blendmodes для достижения моих целей.Самый простой/быстрый способ применения режима смешивания между двумя UIView

Я не вижу способа направить, как UIView рисуется поверх другого. Даже если я подклассифицирую UIView, я не вижу простого способа рисовать, используя смесь больше. Похоже, мне придется подклассифицировать UIImageView, у которого есть drawrect: withBlendMode.

Кто-нибудь сделал это проще? Я надеялся, что могу просто установить свойство blendmode в UIView или UIImageView и не иметь подкласса ...

В принципе, как бы вы быстро инвертировали представление, чтобы черный был белым, а белый - черным?

+0

Привет, @mahboudz, вы нашли лучший способ сделать это? или вы все еще используете этот способ? Благодаря! –

ответ

7

Это, кажется, решение:

Crate подкласс UIView. Затем в drawRect:

    [self.image drawInRect:rect]; 

    // prepare the context to draw into 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    // set the blend mode 
    CGContextSetBlendMode(context, kCGBlendModeDifference); 

    // now draw the appropriate color over the whole thing 
    CGContextFillRect(....); 

Я в порядке, чтобы попробовать это сейчас.

+5

И это действительно сработало? Я знаю, что он опубликован повсюду, но работает ли он? – 2013-01-04 00:13:44