2014-01-25 3 views
3

Мне нужно замаскировать изображение с градиентом размытия.Нанесите градиент размытия

Подробнее; Я хочу, чтобы изображение начиналось слева без размытия и справа от него было размыто. Размытие начнет происходить где-то на полпути. Мне уже удалось полностью размыть изображение, но как отдельный образ, но как применить полупрозрачный градиент этого размытия?

UIImageView *bluredImgView = [[UIImageView alloc] initWithImage:img]; 
bluredImgView.frame = frame; 
CAGradientLayer *lay = [CAGradientLayer layer]; 
lay.frame = bluredImgView.bounds; 
lay.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithWhite: 0.0 alpha: 0.0] CGColor], (id)[[UIColor colorWithWhite: 1.0 alpha: 1.0] CGColor], nil]; 
lay.startPoint = CGPointMake(0.0f, 0.0f); 
lay.endPoint = CGPointMake(1.0f, 0.0f); 
bluredImgView.layer.mask = lay; 
[_profileImageView addSubview:bluredImgView]; 
+1

проверить этот образец проекта http://adcdownload.apple.com/wwdc_2013/wwdc_2013_sample_code/ios_uiimageeffects.zip – AFB

ответ

5

Добавьте размытое изображение в виде отдельного слоя поверх слоя вашего изображения. Затем создайте CAGradientLayer и добавьте его как слой маски на ваш размытый слой изображения.

+0

I отредактировал мой вопрос .. Это то, что я пробовал, но не смог. Не могли бы вы назначить меня в правильном направлении? спасибо .. – snksnk

+0

Dunno. Я пробовал что-то очень похожее, и он отлично работал: –

2

Используйте код ниже:

NSArray *colors = [NSArray arrayWithObjects:(__bridge id)[[UIColor colorWithWhite:0 alpha:0] CGColor], (__bridge id)[[UIColor colorWithWhite:0 alpha:1] CGColor], nil]; 

CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
[gradientLayer setFrame:[bluredImgView bounds]]; 
[gradientLayer setColors:colors]; 
[gradientLayer setStartPoint:CGPointMake(0.0f, 0.0f)]; 
[gradientLayer setEndPoint:CGPointMake(1.0f, 0.0f)]; 

bluredImgView.layer.mask = gradientLayer; 
0

Этот вопрос довольно старый, но все же .. Ни один из предыдущих ответов не смешано эффект размытия к градиенту.

Это добавляет эффект снизу вверх (выглядит круто для титульных изображений):

titleImage.image = [UIImage imageNamed: titleImage]; 


UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; 
UIVisualEffectView *view = [[UIVisualEffectView alloc] initWithEffect:effect]; 
view.frame = titleImage.frame; 

UIImageView *bluredImgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:_location.titleImage]]; 
bluredImgView.frame = _titleImage.frame; 
CAGradientLayer *lay = [CAGradientLayer layer]; 
lay.frame = bluredImgView.bounds; 
lay.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithWhite: 0.0 alpha: 0.0] CGColor], (id)[[UIColor colorWithWhite: 0.0 alpha: 1.0] CGColor], nil]; 
lay.startPoint = CGPointMake(0.0f, 0.0f); 
lay.endPoint = CGPointMake(0.0f, 1.0f); 
view.layer.mask = lay; 
[titleImage addSubview:view]; 
Смежные вопросы