44 votes

Comment appliquer le flou à un UIView?

En ce moment, je construis une application iPhone qui nécessite de brouiller tout UIView. Comment puis-je atteindre cet objectif? J'ai vu ce cadre , mais je ne pense pas que cela fonctionne avec UIView. Existe-t-il un autre moyen de brouiller UIView?

MISE À JOUR : Vérifiez ma réponse mise à jour ci-dessous, ajoutant plus de pertinence avec l'avènement de iOS 7 et iOS 8.

47voto

qegal Points 6399

Cela devrait fonctionner. J'ai commenté dans le code pour vous aider à comprendre ce qu'il se passe:

//To take advantage of CIFilters, you have to import the Core Image framework
#import <CoreImage/CoreImage.h>

//Get a UIImage from the UIView
UIGraphicsBeginImageContext(myView.bounds.size);
[myView.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: 10] forKey: @"inputRadius"];
CIImage *resultImage = [gaussianBlurFilter valueForKey: @"outputImage"]; 
UIImage *endImage = [[UIImage alloc] initWithCIImage:resultImage];

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

Si vous avez des questions sur le code, il suffit de laisser dans les commentaires.

Remarque: CIGaussianBlur n'est pas présent sur iOS que de 5.1, donc vous devez trouver un autre moyen de brouiller la vue pour les appareils 5.x+ (Merci à @BradLarson pour cette astuce). La accepté de répondre à cette question semble prometteur comme un remplacement, comme le fait cette bibliothèque.

28voto

vborra Points 2043

Depuis la sortie d'iOS 7, Cette question a été d'obtenir beaucoup de succès et j'ai pensé que je devrais suivre jusqu'à ce que j'ai fini par faire.

Personnellement, je le flou de la photo à l'heure avec photoshop, mais il y a beaucoup de bibliothèques tierces qui font dynamique et statique flou, ici sont un couple:

Je voulais poster ce parce que vous n'avez plus besoin de prendre des captures d'écran des images individuelles ou de l'écran.

iOS 8: Avec la prochaine sortie d'iOS 8, Apple a inclus construit dans le flou UIView, UIVisualEffectView (https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIVisualEffectView/)

11voto

Robert Points 31

Dans iOS 8, vous pouvez utiliser UIVisualEffectView pour obtenir des vues floues. Voir: https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIVisualEffectView/.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X