I am getting this error only in iOS 7 and the application crashed. In iOS 6, I never get any error, just once of memory warning when opening the camera.
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.
Here is what I am doing.
imagePicker = [[UIImagePickerController alloc] init]; [imagePicker setDelegate:self]; [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera]; [imagePicker setAllowsEditing:YES]; [self presentModalViewController:imagePicker animated:YES];
I did tried to delay the presentModalViewController
, but I am still getting the same message. After few seconds (7-10), the application crashed.
This error is only present in iOS 7.
Anybody has the clue?
The problem in iOS7 has to do with transitions. It seems that if a previous transition didn't complete and you launch a new one, iOS7 messes the views, where iOS6 seems to manage it correctly.
You should initialize your Camera in your UIViewController
, only after the view has Loaded and with a timeout:
- (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; //show camera... if (!hasLoadedCamera) [self performSelector:@selector(showcamera) withObject:nil afterDelay:0.3]; }
and here is the initialization code
- (void)showcamera { imagePicker = [[UIImagePickerController alloc] init]; [imagePicker setDelegate:self]; [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera]; [imagePicker setAllowsEditing:YES]; [self presentModalViewController:imagePicker animated:YES]; }
This error also showed up for me with Apple's PhotoPicker sample code project.
I was using Xcode Version 5.0 and iOS 7.0.3 on an iPhone 4.
Steps to Reproduce:
Download Apple's PhotoPicker sample project at https://developer.apple.com/library/ios/samplecode/PhotoPicker/Introduction/Intro.html
In APLViewController.m comment out line 125
//imagePickerController.showsCameraControls = NO;
In APLViewController.m comment out lines 130-133
//[[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
// self.overlayView.frame = imagePickerController.cameraOverlayView.frame;
// imagePickerController.cameraOverlayView = self.overlayView;
// self.overlayView = nil;
Build and launch the app.
Once launched, rotate device to Landscape mode.
Click Camera icon to open UIImagePickerController in Camera mode.
View the console output.
Console output
PhotoPicker[240:60b] 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.
showsCameraControls property
The problem occurs for me when this has a value of YES (the default).
Setting this to NO eliminated the message.
Bug report
I just filed a bug report with Apple.
I've tried many of the suggestions that have been made in different posts, but have not found a satisfactory workaround.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With