objective-c - 将图像保存到库时不出现 HUD 微调器

标签 objective-c ios photo-gallery mbprogresshud

您好,我正在实现“将图像保存到库”功能,如下面的代码片段所示。基本上,当用户触摸页面上的图像时会触发照片保存。

TouchImageView *tiv = [[TouchImageView  alloc]initWithFrame:blockFrame];
        [tiv setCompletionHandler:^(NSString *imageUrl){
            //Spinner should start after user clicks on an image
            MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES];
            hud.labelText = @"Saving photo to library";

            //trigger method to save image to library
            [self saveImageToLibrary];

        }];


-(void) saveImageToLibrary
{
    //convert url to uiimage
    UIImage *selectedImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL]]]; 

    //Save image to album
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];  
    // Request to save the image to camera roll  
    [library writeImageToSavedPhotosAlbum:[selectedImage CGImage] orientation:(ALAssetOrientation)[selectedImage imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){  

        [MBProgressHUD hideHUDForView:self.navigationController.view animated:YES];

        if (error) {  
            NSLog(@"error");  
        } else {  
            NSLog(@"url %@", assetURL);  
            //Trigger get photo from library function
            self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
            [self presentModalViewController:self.imgPicker animated:YES];

        }  

    }];  
    [library release];     
}

问题是 HUD 微调器没有出现(在延迟 3-4 秒后),我怀疑“writeImageToSavedPhotosAlbum:”是同步的并锁定了显示 HUD 微调器的进程。这是正确的吗?如何解决微调器显示延迟的问题?

最佳答案

是的,没错。替换调用

 [self saveImageToLibrary];

通过

[self performSelector:@selector(saveImageToLibrary) withObject:nil afterDelay:0];

这样 HUD 就有机会在您保存之前显示自己。

关于objective-c - 将图像保存到库时不出现 HUD 微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7847917/

相关文章:

ios - URLRequest POST 在 Swift 5 中不起作用。服务器可能有问题?

java - 无法在 Java 中验证在 iOS 上签名的数据

objective-c - 将 NSView 添加到窗口而不是在顶部?

ios - AFNetworking请求操作-创建 channel /瓶颈队列单例

ios - Websockets 在 iOS 和 Safari 上不起作用 - OSSStatus 错误 9837

javascript - Bootstrap 模态照片库

ios native 应用程序允许从网络保存数据吗?

java - 您展示画廊的首选是什么?

ios - 使用 NSDictionary 创建模型对象

objective-c - 使用 prepareForSegue 在 View 之间发送图像