2015-09-03 15 views
8

Nella mia applicazione voglio applicare l'effetto sfocatura su uiview. Come posso ottenere l'effetto sfocatura. Ho provato da sottostante Codice:Come applicare l'effetto Sfocatura su UIView in iOS?

UIGraphicsBeginImageContext(scrollview.bounds.size); 
[scrollview.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

//Blur the UIImage with a CIFilter 
CIImage *imageToBlur = [CIImage imageWithCGImage:viewImage.CGImage]; 
CIFilter *gaussianBlurFilter = [CIFilter filterWithName: @"CIGaussianBlur"]; 
[gaussianBlurFilter setValue:imageToBlur forKey: @"inputImage"]; 
[gaussianBlurFilter setValue:[NSNumber numberWithFloat:3] forKey: @"inputRadius"]; 
CIImage *resultImage = [gaussianBlurFilter valueForKey: @"outputImage"]; 
UIImage *endImage = [[UIImage alloc] initWithCIImage:resultImage]; 

//Place the UIImage in a UIImageView 
UIImageView *newView = [[UIImageView alloc] initWithFrame:scrollview.bounds]; 
newView.image = endImage; 
[scrollview addSubview:newView]; 

Ma avendo problema utilizzando questo codice. quando si applica l'effetto sfocatura, la vista del tempo diventa piccola.

risposta

11

Basta mettere questa vista sfocatura sulla vista (qui tuaBlurredView) che vuoi essere sfocata. Ecco un esempio in Objective-C:

UIVisualEffect *blurEffect; 
blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; 

UIVisualEffectView *visualEffectView; 
visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; 

visualEffectView.frame = yourBlurredView.bounds; 
[yourBlurredView addSubview:visualEffectView]; 

e Swift:

var visualEffectView = UIVisualEffectView(effect: UIBlurEffect(style: .Light))  

visualEffectView.frame = yourBlurredView.bounds 

yourBlurredView.addSubview(visualEffectView)