加载UIViewController,将UIView保存为图像,不在屏幕上显示

时间:2018-01-05 19:51:22

标签: ios objective-c iphone uiview uiviewcontroller

我有UIViewController,其唯一目的是生成要保存到用户相机胶卷的图像。 我遇到的问题是视图总是保存为黑色图像。我相信这是因为我不想在屏幕上显示视图。

我只是从这样的故事板加载视图控制器:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
ResultsViewController *resultsVC = [storyboard instantiateViewControllerWithIdentifier:@"ResultsViewController"];

并尝试将其保存为:

UIGraphicsBeginImageContextWithOptions(resultsVC.view.bounds.size, resultsVC.view.opaque, 0.0f);
[resultsVC.view drawViewHierarchyInRect:resultsVC.view.bounds afterScreenUpdates:NO];
UIImage *snapshotImageFromMyView = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

显然,由于视图从未在屏幕上显示过,因此未正确设置。

有没有办法可以欺骗它以为它已被呈现,所以可以构建视图?

------编辑----

我已更改为使用UIView而不是UIViewController。调试器显示视图看起来没问题,但是当保存到相机胶卷时它只是黑色。

ResultsView *resultsView = [[NSBundle mainBundle] loadNibNamed:@"ResultsView"
                                                         owner:self
                                                       options:nil].firstObject;
[resultsView setupWithResults:results forSize:[[UIScreen mainScreen] bounds]];
NSLog(@"%@", resultsView);


UIGraphicsBeginImageContextWithOptions(resultsView.bounds.size, resultsView.opaque, 0.0f);
[resultsView drawViewHierarchyInRect:resultsView.bounds afterScreenUpdates:NO];
UIImage *snapshotImageFromMyView = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

0 个答案:

没有答案