Je voulais savoir pourquoi mon code s'exécute beaucoup plus lentement quand j'utilise dispatch_async par rapport à quand je ne l'utilise pas du tout. J'essaie de brouiller les bords de mon UIImage en le masquant et en utilisant UIGraphicsImageRenderer (Je ne sais pas si c'est le moyen le plus efficace ou pas ..) Mais quand je n'utilise pas dispatch_async, ça tourne beaucoup plus vite. Pourquoi donc? Voici mon code et le résultat que je reçois de mon code. Toute aide est très appréciée.Pourquoi utiliser dispatch_async est si lent comparé à ne pas l'utiliser du tout?
self.view.backgroundColor = [UIColor whiteColor];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
UIImage* Img = [UIImage imageNamed:@"1"];
UIImageView * imageview = [[UIImageView alloc]initWithImage:Img];
UIGraphicsImageRenderer * renderer = [[UIGraphicsImageRenderer alloc] initWithSize:Img.size];
UIBezierPath*path=[UIBezierPath bezierPathWithRoundedRect:CGRectMake(20,20,170,170) cornerRadius:5.0];
path.lineWidth = 20;
CAShapeLayer*shapeLayer = [CAShapeLayer new];
shapeLayer.path=path.CGPath;
[shapeLayer setFillColor:[UIColor redColor].CGColor];
[shapeLayer fillColor];
UIImage *shapeImage = [renderer imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull context){
[shapeLayer renderInContext: context.CGContext];}];
CIImage * shapeCimage = [[CIImage alloc] initWithImage:shapeImage];
CIFilter * gaussianBlurFilter = [CIFilter filterWithName: @"CIGaussianBlur"];
[gaussianBlurFilter setValue:shapeCimage forKey: @"inputImage"];
[gaussianBlurFilter setValue:@15 forKey:@"inputRadius"];
CIImage * blurredCIImage = [gaussianBlurFilter valueForKey:kCIOutputImageKey];
UIImage * blurredImage = [UIImage imageWithCIImage:blurredCIImage];
UIImageView *maskedImageView = [[UIImageView alloc]initWithImage:blurredImage];
maskedImageView.contentMode = UIViewContentModeScaleAspectFit;
maskedImageView.frame = imageview.frame;
imageview.layer.mask=maskedImageView.layer;
dispatch_async(dispatch_get_main_queue(), ^{
[self.view addSubview:imageview];
});
});
Où vous arrêtez/masquez la vue d'activité? – Paulw11
Je m'excuse, j'ai oublié de supprimer cette partie de la question avant de la poster, c'est résolu maintenant. Mais mon problème est que dispatch_Async rend mon code beaucoup plus lent. Est-ce que je le fais mal? Je vous remercie. @ Paulw11 –