我有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();