iOS8快照未呈现的视图会导致空快照

所以我知道之前已经回答了很多次,但我还没有找到适合我的解决方案。

奇怪的是,我第一次从UIPickerController呈现相机时,它完全正常工作。 但是如果我再次打开它,它会显示一个带有Camera控件的黑屏(“Cancel”按钮和白色拍照按钮)。

任何有助于抑制此错误的帮助都会非常感激,甚至只是确认这是一个错误,我只需等待Apple修复它就会有很大的帮助!

谢谢大家:)

(PS我在使用iOS 8.1的iPhone 6 Plus上运行)

编辑:代码(我正在使用Xamarin和c#)

public void ShowPhotoTaker (UIViewController vc) { UIImagePickerController picker = new UIImagePickerController (); picker.SourceType = UIImagePickerControllerSourceType.Camera; picker.FinishedPickingMedia += (object sender, picker.DismissViewController(true, null); }; picker.Canceled += (object sender, EventArgs e) => { picker.DismissViewController(true, null); }; vc.PresentViewController (picker, true, null); } 

这是我在调用此方法时得到的确切错误

 Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates. 

我也有这个错误了一段时间。 我已经联系过Xamarin支持,他们告诉我这是iOS 8及更高版本的错误。 除了等待一些bug修复推出iOS开发或者Xamarin本身之外,没有解决方案。 解决方法可能是将构建SDK设置为早期版本并清理+重建您的应用程序。

快照未呈现的视图会导致空快照相同的错误 。

这肯定是一个错误,你也可以在苹果开发者论坛中找到它。

我试图在堆栈溢出时使用许多其他答案来避免此错误,但无法解决此问题。 然而,使用这个我可以一些如何不得到这个错误,我不会称这是一个修复,但试一试,让我知道它是否已修复该问题。
从主队列中使用Grand Central Dispatch async关闭视图控制器为我解决了问题。

 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { // Code to handle the image data dispatch_async(dispatch_get_main_queue(), ^{ [self dismissViewControllerAnimated:YES completion:nil]; }); } -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { dispatch_async(dispatch_get_main_queue(), ^{ [self dismissViewControllerAnimated:YES completion:nil]; }); }