Saya mendapatkan kesalahan ini hanya di iOS 7 dan aplikasi macet. Di iOS 6, saya tidak pernah mendapatkan error apa pun, hanya sekali dari memory warning saat membuka kamera.
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.
Inilah yang saya lakukan.
imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setDelegate:self];
[imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
[imagePicker setAllowsEditing:YES];
[self presentModalViewController:imagePicker animated:YES];
Saya memang mencoba untuk menunda presentModalViewController
, tetapi saya masih mendapatkan pesan yang sama. Setelah beberapa detik (7-10), aplikasi macet.
Kesalahan ini hanya ada di iOS 7.
Ada yang tahu?
Jawaban:
Masalah di iOS7 berkaitan dengan transisi. Tampaknya jika transisi sebelumnya tidak selesai dan Anda meluncurkan yang baru, iOS7 mengacaukan tampilan, di mana iOS6 tampaknya mengelolanya dengan benar.
Anda harus menginisialisasi Kamera di Anda
UIViewController
, hanya setelah tampilan dimuat dan dengan batas waktu:dan berikut adalah kode inisialisasi
sumber
Kesalahan ini juga muncul untuk saya dengan proyek kode sampel PhotoPicker Apple.
Saya menggunakan Xcode Versi 5.0 dan iOS 7.0.3 di iPhone 4.
Langkah-langkah untuk Mereproduksi:
Unduh proyek contoh PhotoPicker Apple di https://developer.apple.com/library/ios/samplecode/PhotoPicker/Introduction/Intro.html
Dalam APLViewController.m beri komentar baris 125
//imagePickerController.showsCameraControls = NO;
Dalam APLViewController.m beri komentar pada baris 130-133
//[[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
// self.overlayView.frame = imagePickerController.cameraOverlayView.frame;
// imagePickerController.cameraOverlayView = self.overlayView;
// self.overlayView = nil;
Bangun dan luncurkan aplikasi.
Setelah diluncurkan, putar perangkat ke mode Lansekap.
Klik ikon Kamera untuk membuka UIImagePickerController dalam mode Kamera.
Lihat keluaran konsol.
Keluaran konsol
PhotoPicker [240: 60b] Memotret tampilan yang belum diberikan menghasilkan foto yang kosong. Pastikan tampilan Anda telah dirender setidaknya sekali sebelum melakukan snapshot atau snapshot setelah pembaruan layar.
properti showsCameraControls
Masalah terjadi pada saya saat ini memiliki nilai YA (default).
Mengatur ini ke NO menghilangkan pesan tersebut.
Laporan bug
Saya baru saja mengajukan laporan bug ke Apple.
Saya telah mencoba banyak saran yang telah dibuat di berbagai pos, tetapi belum menemukan solusi yang memuaskan.
sumber
Saya mendapat masalah saat mencoba menampilkan tampilan kamera di dalam popover. Di bawah iOS6 ini tidak masalah tetapi di iOS7 saya mendapat pesan
demikian juga.
Namun, setelah saya mengubah presentasi tampilan kamera ke layar penuh seperti yang dijelaskan dalam Mengambil Gambar dan Film, Perpustakaan Pengembang iOS semuanya berjalan baik lagi dan pesan tidak pernah muncul lagi. Namun saya harus memastikan bahwa tergantung pada mode aplikasi mana (yaitu, menampilkan tampilan kamera atau rol foto), saya harus menutup popover atau pengontrol tampilan setiap kali metode
- (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker
tersebut dipanggil.sumber
buat properti
Kemudian
Ini seharusnya menyelesaikan masalah
sumber
Saya menggunakan kode ini untuk mengatasi masalah:
sumber
Saya memiliki masalah yang sama dan menemukan pemecahannya. Menurut saya, kesalahan itu terkait dengan orientasi aplikasi Anda. Aplikasi saya hanya menggunakan mode lanskap, tetapi UIImagePickerController menggunakan mode potret. Saya menambahkan blok try-catch ke main.m, dan mendapatkan pengecualian nyata:
Bagaimana saya mengatasi masalah ini:
1) Periksa kembali orientasi perangkat di Target-> Umum, atau file .plist: Orientasi antarmuka yang didukung: Lanskap kiri, Lanskap kanan.
2) Tambahkan AppDelegate.m:
Setelah langkah ini UIImagePickerController berfungsi dengan baik, tetapi viewcontrollers saya dapat diputar ke mode potret. Jadi, untuk mengatasi ini:
3) Buat kategori untuk UINavigationController, (didukungInterfaceOrientations dipindahkan dari UIViewController ke UINavigationController di iOS6):
Solusi ini berfungsi dengan baik di iOS 6.0, 6.1, 7.0. Semoga ini membantu.
sumber
Saya mendapatkan kesalahan ini saat membuat aplikasi dengan iOS SDK 6.1, target penyebaran iOS 6.1 dan menjalankan aplikasi pada iPhone yang didukung iOS 7. Aplikasi tidak mogok tetapi
UIViewController shouldAutorotate
metode penerapan membantu saya menghapus pesan kesalahan.sumber
Saya mengalami masalah yang sama ketika mencoba memodifikasi aplikasi demo yang disertakan dengan Avirary SDK , di aplikasi demo, aplikasi ini hanya dapat mengedit foto yang diambil dari rol kamera. Untuk mencoba mengedit foto dengan mengambil dari kamera, saya menambahkan kode berikut terlebih dahulu di file UIViewcontroller.m:
Kemudian ketika saya menjalankan aplikasi, kesalahan terjadi:
Untuk mengatasi error ini, ubah delegasi UIImagePicker di file UIViewContooler.m Anda seperti yang ditunjukkan di bawah ini:
Kemudian kesalahan menghilang dan aplikasi berfungsi!
sumber
Coba ini, gunakan
dan fungsi
untuk menggantikan.
[self presentModalViewController:imagePicker animated:YES];
dan sebab buatimagePicker
sebagai variabel global.sumber
Inilah yang memperbaikinya untuk saya di aplikasi saya, ymmv
yang pertama adalah aplikasi iPhone - iPad
di appname-Info.plist. dalam Orientasi antarmuka yang didukung (iPad) menunjukkan 4 orientasi.
dalam orientasi antarmuka yang Didukung menunjukkan 3 orientasi. Saya menambahkan yang keempat dan menjalankan aplikasi, tidak ada keluaran debug.
Semoga ini membantu.
sumber
Saya baru saja mengalami masalah yang sama. Dalam kasus saya, masalahnya adalah saya memiliki beberapa kode non-ARC dan saya telah memigrasikannya ke ARC. Ketika saya melakukan migrasi, saya tidak memiliki referensi kuat ke
UIImagePickerController
dan itulah alasan kecelakaan itu.Semoga membantu :)
sumber
Saya memiliki masalah yang sama di iOS 8, Tetapi Akses Kamera Nonaktifkan di dalam Pengaturan -> Privasi untuk Aplikasi saya. Hanya Mengaktifkannya, dan Berhasil.
sumber
Saya menghabiskan waktu lama untuk mencoba menemukan solusinya, dan yang mengejutkan saya telah menemukannya pada akhirnya dan itu sangat lucu begitu saya menemukannya.
Inilah yang akan Anda lakukan untuk mengambil gambar yang Anda pilih dan melanjutkan kerja :)
Ya, untuk mengatasi masalah ini, Anda hanya perlu menutup alat pilih secara normal seperti yang terlihat seperti pesan ini: "Memotret tampilan yang belum dirender menghasilkan snapshot kosong. Pastikan tampilan Anda telah dirender setidaknya sekali sebelum snapshot atau snapshot setelah pembaruan layar. " menghentikan alat pilih menjadi responsif tetapi Anda dapat menutupnya dan mengambil gambar secara normal.
sumber
Dalam kasus saya, itu terkait dengan perubahan tata letak: VC yang menampilkan
UIImagePickerViewController
memiliki bilah status tersembunyi, tetapiUIImagePickerViewController
belum.Jadi, saya menyelesaikannya dengan menyembunyikan bilah status di
UIImagePickerViewController
seperti yang ditunjukkan dalam jawaban ini .sumber
Tidak langsung menjawab pertanyaan Anda, tetapi Anda menyebutkan bahwa Anda memiliki peringatan memori, Anda mungkin menyimpan gambar mentah di properti yang dapat menyebabkan peringatan memori. Ini karena gambar mentah membutuhkan sekitar 30MB memori. Saya melihat peringatan memori serupa saat menguji aplikasi di iOS6 yang ada di seri iPhone 4. Saya masih mendapat peringatan ini ketika perangkat ditingkatkan ke iOS7. Tidak ada peringatan memori saat menguji pada seri iPhone 5 di iOS7.
sumber
Berubah
untuk
memperbaiki masalah untuk saya.
sumber