- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[self dismissViewControllerAnimated:YES completion:^{}];
[self.navigationController.tabBarController.view addSubview:self.waitingView];
dispatch_queue_t currentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(currentQueue, ^{
self.originalImgFromPicker = [info objectForKey:UIImagePickerControllerOriginalImage];
CGSize size = self.originalImgFromPicker.size;
if (size.width > 320)
{
size.height /= (size.width / 320);
size.width = 320;
}
UIGraphicsBeginImageContext(size);
[self.originalImgFromPicker drawInRect:CGRectMake(0,0,size.width,size.height)];
self.resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.originalImgFromPicker = nil;
NSData *resizedImageBinary = UIImageJPEGRepresentation(self.resizedImage, 1.0);
self.resizedImageBinaryString = [NSString base64StringFromData:resizedImageBinary length:resizedImageBinary.length];
dispatch_sync(currentQueue, ^{
[self.waitingView removeFromSuperview];
});
});
}
画像を処理していますが、この間、アクティビティ インジケーター付きの透明なビューで UI をブロックしています。
しかし、このself.waitingView
消失には長い時間がかかります。
画像処理が進行中の場合、何も機能しないコントロールをタップしようとするとUIが実際にブロックされself.waitingView
ますが、非同期ブロックの画像処理が完了してself.waitingView
も画面に残り、コントロールをタップしようとすると応答します。
何もしなければ消えるのに時間がかかります。
これをきびきびとやりたいのですが、コードで何が間違っていますか?