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

时间:2014-11-12 17:01:05

标签: ios objective-c camera xamarin snapshot

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

奇怪的是,我第一次从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.

2 个答案:

答案 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];

});

}