I have a UIImagePickerController being called with sourceType camera and 80% of the time I get a black preview. If I wait, let\'s say around 30 seconds, I get a good preview
I had this same issue, but the app would never show the alert to grant permission to access the photos, and it would never show up in Settings->Privacy->Photos as having asked for permission. It would simply display the black screen without a permission prompt.
I finally traced this to the info.plist.
As it turns out if you add the key "Bundle display name" to the info.plist and leave the value blank the permission alert will never display. It seems the permissions alert pulls this value to display in the alert, and if you leave it blank it simply will not show the alert.
If you have this in your plist without a value it could be causing a black preview.
EDIT: I was experiencing this issue with some devices and not others, with my testing all 3 of the iPhone 6 devices I tested with and the iPhone 5s would not show the alert and would hang on the black screen. An iPhone 4s and iPhone 6S+ showed the alert and worked as expected.