Di iOS 8 saya mengalami masalah dalam mengambil gambar dari kamera sampai sekarang saya menggunakan kode ini untuk
UIImagePickerController *controller=[[UIImagePickerController alloc] init];
controller.videoQuality=UIImagePickerControllerQualityTypeMedium;
controller.delegate=(id)self;
controller.sourceType=UIImagePickerControllerSourceTypeCamera;
[self presentViewController:controller animated:YES completion:nil];
Tetapi di iOS 8 saya mendapatkan ini:
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.
Saya telah mencoba dengan solusi yang disediakan oleh Posting ini dengan
@property (strong,nonatomic)UIImagePickerController *controller;
_controller=[[UIImagePickerController alloc] init];
_controller.videoQuality=UIImagePickerControllerQualityTypeMedium;
_controller.delegate=(id)self;
_controller.sourceType=UIImagePickerControllerSourceTypeCamera;
_[self presentViewController:controller animated:YES completion:nil];
dan ini
...
controller.modalPresentationStyle=UIModalPresentationFullScreen;
or
controller.modalPresentationStyle=UIModalPresentationCurrentContext;
...
dan ini
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self presentViewController:controller animated:YES completion:nil];
});
dan ini
[self presentViewController:controller animated:YES completion:NULL];
dan ini
[self presentViewController:controller animated:YES completion:^{
}];
ada ide?
objective-c
ios8
uiimagepickercontroller
souvickcse
sumber
sumber
dispatch_async(dispatch_get_main_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
yang saya ubah menjadidispatch_async(dispatch_get_main_queue(), ^{
Jawaban:
Saya cukup yakin ini hanya bug di iOS 8.0. Ini direproduksi dengan aplikasi POC paling sederhana yang tidak lebih dari upaya untuk menyajikan
UIImagePickerController
seperti yang Anda lakukan di atas. Selain itu, tidak ada pola alternatif untuk menampilkan pemilih gambar / kamera, setahu saya. Anda bahkan dapat mengunduh contoh aplikasi Apple Menggunakan UIImagePickerController , menjalankannya, dan itu akan menghasilkan kesalahan yang sama di luar kotak.Yang mengatakan, fungsionalitasnya masih bekerja untuk saya. Selain peringatan / kesalahan, apakah Anda memiliki masalah dengan fungsi aplikasi Anda?
sumber
Saya berjuang dengan masalah ini selama beberapa jam, saya telah membaca setiap topik yang relevan dan menemukan bahwa kesalahan itu disebabkan karena di bawah pengaturan privasi perangkat saya, akses kamera ke aplikasi saya diblokir !!! Saya tidak pernah menyangkal akses ke kamera dan saya tidak tahu bagaimana itu diblokir tapi itu masalahnya!
sumber
Saya tidak memiliki poin reputasi yang cukup untuk mengomentari jawaban @ greg di atas, jadi akan menambahkan pengamatan saya di sini. Saya memiliki proyek Swift untuk iPad dan iPhone. Saya memiliki metode di dalam pengontrol tampilan utama saya (bit yang relevan di bawah). Ketika saya menguji ini di telepon, semuanya berfungsi dengan baik dan tidak ada peringatan yang dihasilkan. Ketika saya menjalankannya di iPad, semuanya berfungsi dengan baik tetapi saya melihat peringatan tentang snapshotting tampilan. Yang menarik, bagaimanapun, adalah ketika saya menjalankan iPad tanpa menggunakan popover controller, semuanya bekerja dengan baik tanpa peringatan. Sayangnya, Apple mengamanatkan bahwa pemilih gambar harus digunakan dalam popover di iPad, jika kamera tidak digunakan.
sumber
Saya mengalami hal ini setelah memanggil UIImagePickerController presentViewController: dari callback ke delegasi UIAlertView. Saya memecahkan masalah dengan mendorong presentViewController: membatalkan jejak eksekusi saat ini menggunakan dispatch_async.
sumber
Saya mengalami masalah ini ketika menjiwai beberapa tampilan dan aplikasi akan masuk ke mode latar belakang dan kembali. Saya menanganinya dengan menetapkan bendera isActive. Saya mengaturnya untuk TIDAK di
dan YA dalam
dan menghidupkan atau tidak menghidupkan pandangan saya sesuai. Mengurus masalah ini.
sumber
Saya punya ini dengan UIAlertControllerStyleActionSheet memberi pengguna pilihan untuk mengambil foto dengan kamera atau menggunakan satu dari perpustakaan.
Saya mencoba breakpoint simbolis pada pesan kesalahan
Itu menunjukkan kepada saya kesalahan yang dihasilkan oleh penggunaan intern dari UICollectionView selama presentasi
Saya memperbaikinya dengan secara eksplisit mengatur frame sebelum presentasi
Berikut adalah metode lengkap yang berfungsi tanpa kesalahan
sumber
Anda dapat membungkam peringatan "Snapshotting a view" dengan mereferensikan
view
properti sebelum menghadirkan pengontrol tampilan. Melakukannya menyebabkan tampilan memuat dan memungkinkan iOS merendernya sebelum mengambil snapshot.sumber
cameraOverlayView
, sayangnya saya masih mendapatkan masalah ini bahkan ketika saya menerapkan tip ini.Bagi siapa pun yang melihat masalah dengan pratinjau hitam setelah pengambilan gambar, menyembunyikan bilah status setelah UIPickerController ditampilkan tampaknya memperbaiki masalah tersebut.
sumber
Saya menemukan masalah yang sama dan mencoba segalanya. Saya memiliki dua aplikasi yang berbeda, satu di tujuan-C dan satu di cepat - keduanya memiliki masalah yang sama. Pesan kesalahan datang di debugger dan layar menjadi hitam setelah foto pertama. Ini hanya terjadi di iOS> = 8.0, jelas itu adalah bug.
Saya menemukan solusi yang sulit. Matikan kontrol kamera dengan imagePicker.showsCameraControls = false dan buat overlayView Anda sendiri yang memiliki tombol-tombol yang hilang. Ada berbagai tutorial seputar cara melakukan ini. Pesan kesalahan aneh tetap, tapi setidaknya layar tidak menjadi hitam dan Anda memiliki aplikasi yang berfungsi.
sumber
Ini mungkin bug dari ImagePickerController bawaan. Kode saya berfungsi, tetapi terkadang macet di iPhone 6 Plus.
Saya sudah mencoba semua solusi yang disarankan oleh jawaban lain tetapi tidak berhasil. Masalah akhirnya terpecahkan setelah beralih ke JPSImagePickerController .
sumber
Saya sudah mencoba semuanya, masalah saya adalah pemilih gambar untuk kamera dan perpustakaan foto menghilang tepat setelah mereka muncul. Saya menyelesaikannya dengan baris berikut (cepat)
sumber
Saya cukup yakin ini hanya bug di iOS 8.0. Ini direproduksi dengan aplikasi POC paling sederhana yang tidak lebih dari upaya untuk menghadirkan UIImagePickerController seperti yang Anda lakukan di atas. Selain itu, tidak ada pola alternatif untuk menampilkan pemilih gambar / kamera, setahu saya. Anda bahkan dapat mengunduh contoh aplikasi Apple Menggunakan UIImagePickerController, menjalankannya, dan itu akan menghasilkan kesalahan yang sama di luar kotak.
Yang mengatakan, fungsionalitasnya masih bekerja untuk saya. Selain peringatan / kesalahan, apakah Anda memiliki masalah dengan fungsi aplikasi Anda?
sumber
Jika kami menggunakan
UIImagePickerController
sebagai properti, maka peringatan ini akan hilang.xcodemenganggap bahwa kita tidak menggunakan hasil dariUIImagePickerController
, jika kita instantiatingUIImagePickerController
dalam suatu fungsi.sumber
Memanggil metode ini bekerja untuk saya. Tempatkan setelah menyajikan tampilan Anda.
sumber
Saya juga mengalami masalah yang sama dan saya mengatasinya dengan memeriksa apakah kamera tersedia:
sumber
Saya telah menemukan masalah ini. Ketika kami memanggil kamera dan melepaskan pandangan menghasilkan masalah ini. Misalnya, memanggil kamera dan mengatur tampilan nil dalam metode viewDidDisappear kesalahan ini akan terjadi karena tidak ada panggilan balik untuk acara kamera. Pastikan tentang kasus ini juga untuk kesalahan ini.
sumber
Saya mendapat bug yang sama, mendapatkan pesan di bawah di konsol sambil membuka kamera.
'Memotret ulang tampilan yang belum dirender menghasilkan snapshot kosong. Pastikan tampilan Anda telah diberikan setidaknya satu kali sebelum pengambilan gambar atau foto setelah pembaruan layar. '
Bagi saya masalah adalah dengan nama tampilan Bundle di Info.plist file.it itu kosong bagaimana, saya meletakkan nama aplikasi saya di sana dan sekarang berfungsi dengan baik. memblokir tampilan dari render.
masalahnya bukan pada tampilan tetapi dengan menghadirkannya tanpa izin. Anda dapat memeriksanya di pengaturan -> privasi -> Kamera, jika aplikasi Anda tidak terdaftar, masalahnya mungkin sama.
sumber
Saya menggunakan Phonegap, tetapi utas ini terus muncul sebagai yang pertama saat Googling tentang pesan kesalahan.
Bagi saya masalah ini hilang dengan mendefinisikan imagetype ke PNG.
Jadi seluruh barisnya adalah:
Jarak tempuh Anda mungkin berbeda-beda, tetapi itu cukup membantu saya.
sumber
Atau, pertimbangkan untuk menggunakan
drawViewHierarchyInRect
:Cepat:
Tujuan-C:
Lihat juga:
sumber
Dalam kasus saya (XCode 7 dan iOS 9), saya menggunakan
UINavigationController
"tersembunyi", jadi saya harus menambahkanUINavigationControllerDelegate
untuk menghadirkan kamera atau roll dan berfungsi seperti seharusnya!And pickerControllerDelegate.self
juga tidak menampilkan kesalahan!sumber