代码执行顺序?

时间:2015-07-31 16:19:55

标签: ios xcode avfoundation mbprogresshud

我正在使用下面的代码从视频中抓取一个farme用作拇指指甲。这是按照需要工作的,但是我的MBProgressHUD仅在图像抓取完成后显示,在一秒钟内在屏幕上闪烁。我已经以相同的方式多次使用MBPRogressHUD,在代码的开头显示它并在完成其他所有操作后隐藏,这一直都有效,但这次它就像代码运行无序一样?任何帮助将不胜感激。

这是我按下按钮时调用的方法。

- (IBAction)grabImage:(id)sender {

    MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    hud.mode = MBProgressHUDModeIndeterminate;
    hud.labelText = @"Grabing Thumbnail";
    [hud show:YES];

    self.imageholder.image = [self grabImageMethod];


    [hud hide:YES];
}

这是在in。中调用的抓取方法。

-(UIImage*)grabImageMethod{
   NSURL *vidURL = [NSURL URLWithString:@"http://myserver.com/myfile.mp4"];

    AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:vidURL options:nil];
    AVAssetImageGenerator *generate = [[AVAssetImageGenerator alloc] initWithAsset:asset];
    NSError *err = NULL;
    CMTime time = CMTimeMake(1, 60);
    CGImageRef imgRef = [generate copyCGImageAtTime:time actualTime:NULL error:&err];
    NSLog(@"err==%@, imageRef==%@", err, imgRef);

    return [[UIImage alloc] initWithCGImage:imgRef];
}

1 个答案:

答案 0 :(得分:0)

在nielsbot的评论之后我去了并取代了

[hud show:YES];

self.imageholder.image = [self grabImageMethod];

[hud hide:YES];

[hud showAnimated:YES whileExecutingBlock:^{
    self.imageholder.image = [self grabImageMethod];
}];

它现在完美无缺。