Kamera z niestandardowym widokiem
Moja aplikacja używa kamery, chciałbym dodać nakładkę na podgląd kamery. Na przykład Chcę użyć ramki na zdjęcia, gdy używam aparatu, a także chciałbym dodać niestandardowy pasek do operacji z aparatem. Pomóż mi zrobić to samo.
4 answers
Możesz próbować użyć UIImagePickerController. Ale znam jedno rozwiązanie twojego problemu. Możesz to zrobić łatwo za pomocą klas AVCamCaptureManager i AVCamRecorder. Apple ma program demonstracyjny zbudowany na stronie dewelopera tutaj . Nazywa się AVCam. W prostych słowach to, co robi, gdy klikniesz, aby otworzyć aparat, wywołuje klasy i metody, które są odpowiedzialne za otwarcie aparatu iPhone ' a i nagrywanie wideo lub przechwytywanie dźwięku. Wywołuje te same klasy, które są nazywane przez UIImagePickerController. Więc aparat otworzy się i zacznie pobierać dane wejściowe.
Teraz, jeśli otworzysz plik xib tego projektu AVCam, znajdziesz mały obiekt UIView. Ten widok jest odpowiedzialny za wyświetlanie obrazu z kamery. Możesz zmienić rozmiar tego widoku zgodnie z żądanym rozmiarem, a wejście kamery będzie wyświetlane w tym dużym obszarze. Możesz również umieścić obraz ramki wokół niego zgodnie z wyborem.
To działało dla mnie, gdy chciałem zmienić rozmiar obrazu wejściowego kamery i uchwycić zdjęcia. Mam nadzieję, że tobie też się uda.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-03 18:46:11
Utwórz interfejs interfejsu użytkownika z kodu, dostosuj jego właściwości, Dodaj do niego nakładkę, a za pomocą kontrolera steruj, co chcesz na tej nakładce : niestandardowe kontrolki, nakładanie obrazów itp...
To daje coś takiego:
self.picker = [[UIImagePickerController alloc] init];
self.picker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.picker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
self.picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
self.picker.showsCameraControls = NO;
self.picker.navigationBarHidden = YES;
self.picker.toolbarHidden = YES;
self.picker.wantsFullScreenLayout = YES;
// Insert the overlay
self.overlay = [[OverlayViewController alloc] initWithNibName:@"Overlay" bundle:nil];
self.overlay.pickerReference = self.picker;
self.picker.cameraOverlayView = self.overlay.view;
self.picker.delegate = self.overlay;
[self presentModalViewController:self.picker animated:NO];
OverlayViewController
jest kontrolerem, który musisz zapisać, aby kontrolować wszystko, co dodajesz do nakładki.
pickerReference
jest własnością, którą możesz zachować, aby wysyłać zamówienia do kamery. Na przykład, można wywołać następujące z IBAction pochodzi z UIButton umieszczonego na nakładce:
[self.pickerReference takePicture];
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-12 00:48:38
Przeczytaj odniesienie do klasy UIImagePickerController , dokładnie w dokumentacji ...
Istnieją dla tego właściwości, szczególnie właściwości cameraOverlayView
i showsCameraControls
.
Możesz więc ukryć elementy sterujące, udostępnić niestandardowy widok Nakładki i dodać podglądy do tego niestandardowego widoku, aby dodać niestandardowe przyciski, ramki itp.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-03 18:45:39
Wersja Swift 3 dla odpowiedzi od Olivera:
self.picker = UIImagePickerController()
self.picker.sourceType = .camera
self.picker.cameraCaptureMode = .photo
self.picker.cameraDevice = .rear
self.picker.showsCameraControls = false
self.picker.isNavigationBarHidden = true
self.picker.isToolbarHidden = true
// Insert the overlay
self.overlayViewController = self.storyboard?.instantiateViewController(withIdentifier: "Overlay") as! OverlayViewController
self.picker.cameraOverlayView = self.overlayViewController.view
self.picker.delegate = self.overlayViewController
self.navigationController?.present(self.picker, animated: true, completion: nil)
OverlayViewController protocols:
class OverlayViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-23 08:08:44