所以我知道之前已经回答了很多次,但我还没有找到适合我的解决方案。
奇怪的是,我第一次从UIPickerController呈现相机时,它完全正常工作。但是如果我再次打开它,它会显示一个带有Camera控件的黑屏(“Cancel”按钮和白色拍照按钮)。
任何有助于抑制此错误的帮助都会非常感激,甚至只是确认这是一个错误,我只需等待Apple修复它就会有很大的帮助!
全部谢谢:)
(P.S。我正在使用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.
答案 0 :(得分:1)
我也有这个错误了一段时间。我已经联系了Xamarin支持,他们告诉我这是iOS 8及更高版本的错误。除了等待一些bug修复推出iOS开发或者Xamarin本身之外,没有解决方案。解决方法可能是将构建SDK设置为早期版本并清理+重建应用程序。
答案 1 :(得分:0)
Snapshotting a view that has not been rendered results in an empty snapshot same error
这绝对是一个错误,您也可以在Apple开发者论坛中找到它。
我试图在堆栈溢出时使用很多其他答案来避免此错误,但无法解决此问题。然而,使用这个我可能会有一些如何不能得到这个错误,我不会称之为修复,但试一试,让我知道它是否已修复问题。
从主队列中使用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];
});
}