English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Prefacio: Creo que todos saben que la mayoría de las aplicaciones tienen módulos míos, y en mis módulos básicamente hay información de avatar de usuarios, y se puede cambiar el avatar. Entonces, hoy les voy a presentar brevemente cómo llamar al sistema de cámara para tomar fotos o al álbum de fotos en el desarrollo de iOS. Para obtener la cámara del sistema o el álbum de fotos, necesitamos usar la clase UIImagePickerController. A continuación, veamos cómo hacerlo:
Primero, es necesario seguir los dos protocolos del delegado de UIImagePickerController: <UIImagePickerControllerDelegate, UINavigationControllerDelegate>. ¿Por qué son dos protocolos? Si presionas la tecla command y haces clic en el delegate de UIImagePickerController, te darás cuenta de que realmente este delegado sigue dos protocolos.
#import "HeaderPhotoViewController.h" @interface HeaderPhotoViewController () <UIImagePickerControllerDelegate, UINavigationControllerDelegate> @property (nonatomic, strong) UIImageView * imageView; @end @implementation HeaderPhotoViewController - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"Configurar avatar"; self.view.backgroundColor = [UIColor whiteColor]; [self setNavigation]; [self addSubviews]; [self makeConstraintsForUI]; } #pragma mark - establecer navegación - (void)setNavigation { self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(selectPhoto:)]; } #pragma mark - acción del elemento de navegación - (void)selectPhoto:(UIBarButtonItem *)itemCamera { //Crear el objeto UIImagePickerController y establecer el delegado y la edición UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init]; imagePicker.editing = SI; imagePicker.delegate = self; imagePicker.allowsEditing = YES; //Crear un cuadro de diálogo de hoja para sugerir la selección de cámara o galería UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"Por favor, seleccione el modo de apertura" message:nil preferredStyle:UIAlertControllerStyleActionSheet]; //Opciones de la cámara UIAlertAction * camera = [UIAlertAction actionWithTitle:@"Cámara" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { //Al seleccionar la cámara, configurar las propiedades del objeto UIImagePickerController imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.modalPresentationStyle = UIModalPresentationFullScreen; imagePicker.mediaTypes = @[(NSString *)kUTTypeImage]; imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; //Saltar al controlador UIImagePickerController para abrir la cámara [self presentViewController:imagePicker animated:YES completion:nil]; }] //Opciones de la galería UIAlertAction * photo = [UIAlertAction actionWithTitle:@"Galería" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { //Al seleccionar la galería, configurar las propiedades del objeto UIImagePickerController imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; //Saltar al controlador UIImagePickerController para abrir la galería de fotos [self presentViewController:imagePicker animated:YES completion:nil]; }] //botón de cancelar UIAlertAction * cancel = [UIAlertAction actionWithTitle:@"cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { [self dismissViewControllerAnimated:YES completion:nil]; }] //agregar eventos de botones [alert addAction:camera]; [alert addAction:photo]; [alert addAction:cancel]; //mostrar cuadro de diálogo de hoja emergente [self presentViewController:alert animated:YES completion:nil]; } #pragma mark - add subviews - (void)addSubviews { [self.view addSubview:self.imageView]; } #pragma mark - make constraints - (void)makeConstraintsForUI { __weak typeof(self)weakSelf = self; [_imageView mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(Screen_Width, Screen_Width)); make.centerX.mas_equalTo(weakSelf.view.mas_centerX); make.centerY.mas_equalTo(weakSelf.view.mas_centerY); }] } #pragma mark - imagePickerController delegate - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info { [picker dismissViewControllerAnimated:YES completion:nil]; //obtener la imagen UIImage * image = [info valueForKey:UIImagePickerControllerEditedImage]; _imageView.image = image; } #pragma mark - setter and getter - (UIImageView *)imageView { if (!_imageView) { _imageView = [[UIImageView alloc] init]; _imageView.backgroundColor = [UIColor greenColor]; _imageView.contentMode = UIViewContentModeScaleAspectFill; } return _imageView; } @end
¡OK! Se han presentado todos los códigos del demo, el último paso es configurar el archivo plist, no olvide esto, de lo contrario se caerá. Añada el campo de llamada de la cámara Privacy al archivo plist - Descripción de Uso de la Cámara y los Campos de Llamada del Álbum: Privacidad - Descripción de Uso de la Biblioteca de Fotos. Todo está listo, solo falta un teléfono inteligente para pruebas, se necesita un teléfono real para probar la cámara.
Eso es todo el contenido de este artículo, espero que sea útil para su aprendizaje y que todos apoyen el tutorial de alarido.
Declaración: El contenido de este artículo se obtiene de la red, pertenece al autor original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha procesado editorialmente y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @ para denunciar y proporcione evidencia. Si se verifica, este sitio eliminará inmediatamente el contenido sospechoso de infracción de derechos de autor.)