From 1c526cecfee2a5d211fc685e07c1a8e9e0e6e0b0 Mon Sep 17 00:00:00 2001 From: Dan Hassin Date: Tue, 16 Jul 2013 00:22:51 -0400 Subject: [PATCH] Add asynchronous setImage: with completion block --- FaceImageView/FaceImageView.h | 2 ++ FaceImageView/FaceImageView.m | 16 ++++++++++++++++ readme.md | 6 ++++++ 3 files changed, 24 insertions(+) diff --git a/FaceImageView/FaceImageView.h b/FaceImageView/FaceImageView.h index a35b7d9..08a0695 100644 --- a/FaceImageView/FaceImageView.h +++ b/FaceImageView/FaceImageView.h @@ -15,4 +15,6 @@ @property (nonatomic, readonly) int numberOfFacesDetected; +- (void) setImage:(UIImage *)image completion:(void(^)(void))block; + @end diff --git a/FaceImageView/FaceImageView.m b/FaceImageView/FaceImageView.m index 6ba3de8..22a3622 100644 --- a/FaceImageView/FaceImageView.m +++ b/FaceImageView/FaceImageView.m @@ -86,6 +86,22 @@ - (void) calculateCentroidOfFaceLocations _centroid = centroid; } +- (void) setImage:(UIImage *)image completion:(void(^)(void))block +{ + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^ + { + [self setImage:image]; + + dispatch_async(dispatch_get_main_queue(), ^ + { + [self setNeedsDisplay]; + + if (block) + block(); + }); + }); +} + - (void) setImage:(UIImage *)image { _image = image; diff --git a/readme.md b/readme.md index 6182d59..90490ea 100644 --- a/readme.md +++ b/readme.md @@ -28,6 +28,12 @@ imageView.image = ; [self.view addSubview:imageView]; ``` +It may also be wise to set the image asynchronously, as face detection can sometimes take a second: + +``` +[imageView setImage: completion:^{}]; +``` + Demo App ---------