Ich erhalte diesen Fehler nur in iOS 7 und die Anwendung stürzte ab. In iOS 6 wird beim Öffnen der Kamera nur einmal eine Speicherwarnung angezeigt.
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.
Hier ist was ich tue.
imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setDelegate:self];
[imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
[imagePicker setAllowsEditing:YES];
[self presentModalViewController:imagePicker animated:YES];
Ich habe versucht, das zu verzögern presentModalViewController
, aber ich erhalte immer noch die gleiche Nachricht. Nach einigen Sekunden (7-10) stürzte die Anwendung ab.
Dieser Fehler ist nur in iOS 7 vorhanden.
Hat jemand die Ahnung?
Antworten:
Das Problem in iOS7 hat mit Übergängen zu tun. Es scheint, dass iOS7 die Ansichten durcheinander bringt, wenn ein vorheriger Übergang nicht abgeschlossen wurde und Sie einen neuen starten. IOS6 scheint ihn korrekt zu verwalten.
Sie sollten Ihre Kamera in Ihrer Kamera
UIViewController
erst initialisieren , nachdem die Ansicht geladen wurde und eine Zeitüberschreitung vorliegt:und hier ist der Initialisierungscode
quelle
Dieser Fehler trat auch bei Apples PhotoPicker-Beispielcodeprojekt auf.
Ich habe Xcode Version 5.0 und iOS 7.0.3 auf einem iPhone 4 verwendet.
Schritte zum Reproduzieren:
Laden Sie das PhotoPicker-Beispielprojekt von Apple unter https://developer.apple.com/library/ios/samplecode/PhotoPicker/Introduction/Intro.html herunter
In APLViewController.m Zeile 125 auskommentieren
//imagePickerController.showsCameraControls = NO;
In APLViewController.m die Zeilen 130-133 auskommentieren
//[[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
// self.overlayView.frame = imagePickerController.cameraOverlayView.frame;
// imagePickerController.cameraOverlayView = self.overlayView;
// self.overlayView = nil;
Erstellen und starten Sie die App.
Drehen Sie das Gerät nach dem Start in den Querformatmodus.
Klicken Sie auf das Kamerasymbol, um UIImagePickerController im Kameramodus zu öffnen.
Zeigen Sie die Konsolenausgabe an.
Konsolenausgabe
PhotoPicker [240: 60b] Beim Snapshot einer Ansicht, die nicht gerendert wurde, wird ein leerer Snapshot erstellt. Stellen Sie sicher, dass Ihre Ansicht mindestens einmal gerendert wurde, bevor Sie einen Schnappschuss oder einen Schnappschuss nach Bildschirmaktualisierungen erstellen.
showCameraControls-Eigenschaft
Das Problem tritt bei mir auf, wenn dies den Wert YES hat (Standardeinstellung).
Wenn Sie dies auf NEIN setzen, wird die Meldung entfernt.
Fehlerbericht
Ich habe gerade einen Fehlerbericht bei Apple eingereicht.
Ich habe viele der Vorschläge ausprobiert, die in verschiedenen Beiträgen gemacht wurden, aber keine zufriedenstellende Problemumgehung gefunden.
quelle
Ich habe das Problem bekommen, als ich versucht habe, die Kameraansicht in einem Popover darzustellen. Unter iOS6 war dies kein Problem, aber in iOS7 bekam ich die Nachricht
auch.
Nachdem ich jedoch die Darstellung der Kameraansicht auf Vollbild geändert hatte, wie unter Aufnehmen von Bildern und Filmen, iOS Developer Library beschrieben , ging alles wieder in Ordnung und die Meldung wurde nie wieder angezeigt . Ich musste jedoch sicherstellen, dass ich je nachdem, in welchem Modus sich die App befindet (dh Kameraansicht oder Fotorolle anzeigen), entweder das Popover oder den Ansichtscontroller schließen musste, wenn die Methode
- (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker
aufgerufen wurde.quelle
Erstellen Sie eine Eigenschaft
Dann
Dies sollte das Problem lösen
quelle
Ich habe diesen Code verwendet, um das Problem zu umgehen:
quelle
Ich habe das gleiche Problem und habe eine Lösung gefunden. Ich denke, dieser Fehler hängt mit der Ausrichtung Ihrer Anwendung zusammen. Meine Anwendung verwendet nur den Querformatmodus, aber UIImagePickerController verwendet den Hochformatmodus. Ich füge einen try-catch-Block zu main.m hinzu und erhalte eine echte Ausnahme:
Wie ich dieses Problem löse:
1) Überprüfen Sie die Geräteorientierung erneut in der Datei Ziel-> Allgemein oder .plist: Unterstützte Schnittstellenausrichtungen: Querformat links, Querformat rechts.
2) Fügen Sie in AppDelegate.m hinzu:
Nach diesem Schritt funktioniert UIImagePickerController ordnungsgemäß, aber meine Viewcontroller können in den Hochformatmodus gedreht werden. Um dies zu lösen:
3) Erstellen Sie eine Kategorie für UINavigationController (supportInterfaceOrientations wurde in iOS6 von UIViewController zu UINavigationController verschoben):
Diese Lösung funktioniert ordnungsgemäß unter iOS 6.0, 6.1, 7.0. Hoffe das hilft.
quelle
Ich erhalte diesen Fehler, wenn ich eine App mit iOS SDK 6.1 erstelle, das Bereitstellungsziel iOS 6.1 und die App auf einem iPhone mit iOS 7-Unterstützung ausführe. App stürzt nicht ab, aber die Implementierungsmethode
UIViewController shouldAutorotate
hilft mir, Fehlermeldungen zu entfernen.quelle
Ich hatte das gleiche Problem, als ich versuchte, die mit dem Avirary SDK gelieferte Demo-App zu ändern. In der Demo-App kann nur das von der Kamerarolle ausgewählte Foto bearbeitet werden. Um zu versuchen, das Foto durch Aufnehmen mit der Kamera zu bearbeiten, habe ich zuerst den folgenden Code in die Datei UIViewcontroller.m eingefügt:
Wenn ich dann die App starte, ist der Fehler aufgetreten:
Um den Fehler zu beheben, haben Sie den UIImagePicker-Delegaten in Ihrer UIViewContooler.m-Datei wie folgt geändert:
Dann ist der Fehler verschwunden und die App funktioniert!
quelle
Versuchen Sie dies, verwenden Sie
und Funktion
ersetzen.
[self presentModalViewController:imagePicker animated:YES];
und natürlichimagePicker
als globale Variable machen.quelle
Dies hat es für mich in meiner App behoben, ymmv
Zunächst einmal ist es eine iPhone - iPad App
in appname-Info.plist. in der unterstützten Benutzeroberfläche zeigten Orientierungen (iPad) 4 Orientierungen.
in der unterstützten Schnittstelle zeigten Orientierungen 3 Orientierungen. Ich habe die vierte hinzugefügt und die App ausgeführt, keine Debug-Ausgabe.
Hoffe das hilft.
quelle
Ich bin gerade auf das gleiche Problem gestoßen. In meinem Fall bestand das Problem darin, dass ich einen Nicht-ARC-Code hatte und diesen auf ARC migriert habe. Als ich die Migration durchführte, hatte ich keinen starken Bezug zu
UIImagePickerController
und das war der Grund für den Absturz.Ich hoffe es hilft :)
quelle
Ich hatte das gleiche Problem in iOS 8, aber der Kamerazugriff war in den Einstellungen -> Datenschutz für meine App deaktiviert. Einfach aktiviert, und es hat funktioniert.
quelle
Ich habe lange versucht, die Lösung zu finden, und überraschenderweise habe ich sie am Ende gefunden und es war einfach sehr lustig, als ich sie entdeckte.
Hier ist, was Sie tun werden, um das ausgewählte Bild abzurufen und die Arbeit fortzusetzen :)
Ja, um das Problem zu beheben, müssen Sie die Auswahl nur normal schließen, da die folgende Meldung angezeigt wird: "Schnappschuss einer Ansicht, die nicht gerendert wurde, führt zu einem leeren Schnappschuss. Stellen Sie sicher, dass Ihre Ansicht mindestens einmal gerendert wurde, bevor Sie einen Schnappschuss oder einen Schnappschuss danach erstellen Bildschirmaktualisierungen. " Verhindert, dass der Picker reagiert, aber Sie können ihn schließen und das Bild normal abrufen.
quelle
In meinem Fall war es mit einer Layoutänderung verbunden: Der VC, der
UIImagePickerViewController
das präsentiert, hat die Statusleiste ausgeblendet, das aberUIImagePickerViewController
nicht.Also habe ich es gelöst, indem ich die Statusleiste in der versteckt habe,
UIImagePickerViewController
wie es in dieser Antwort gezeigt wird .quelle
Sie haben Ihre Frage nicht direkt beantwortet, aber Sie haben erwähnt, dass Sie eine Speicherwarnung hatten. Möglicherweise speichern Sie das Rohbild in einer Eigenschaft, die zu einer Speicherwarnung führen kann. Dies liegt daran, dass das Rohbild ungefähr 30 MB Speicher belegt. Beim Testen von Apps auf iOS6, die sich auf der iPhone 4-Serie befanden, ist mir eine ähnliche Speicherwarnung aufgefallen. Ich habe diese Warnung immer noch erhalten, als die Geräte auf iOS7 aktualisiert wurden. Beim Testen auf der iPhone 5-Serie unter iOS7 wird keine Speicherwarnung angezeigt.
quelle
Ändern
zu
Das Problem wurde für mich behoben.
quelle