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.

问题描述:自定义主题拍照预览出现黑屏。一次正常一次黑屏一次正常一次黑屏,黑屏时重拍后能正常预览。预览黑屏时控制台输入Log如下:

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.

问题分析:iPhone5S有问题,iPad2没问题。看了iPhone5S中系统的拍照也是有同样问题,判断为系统bug。

官方UIImagePickerController的例子,自己实现拍照按钮,在iPhone5S上正常。
https://developer.apple.com/LIBRARY/IOS/samplecode/PhotoPicker/Listings/PhotoPicker_APLViewController_m.html#//apple_ref/doc/uid/DTS40010196-PhotoPicker_APLViewController_m-DontLinkElementID_6

这是一个老外写的UIImagePickerController的例子,简单使用,在iPhone5S上黑屏。
https://github.com/bartvandeweerdt/CameraTest

看了黑屏时,View的层级,有一个黑色的CAMBlurredSnapshotView覆盖在上面。手动把其removeFromSuperView,预览只有一帧,并不会更新。

问题解决:此bug为系统bug。从iOS8.0到iOS8.1都有,苹果并没有修复。并不是每台都有这个问题,但是一旦有这个问题,就会一直存在,除非重装系统。

现在的解决办法只有参考官方例子自己实现拍照按钮。

 

PS:系统都为iOS8.1