English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Introduzione: Credo che la maggior parte di voi sappia che la maggior parte delle app ha un modulo "Io" e che in questo modulo ci sono informazioni come l'immagine del profilo dell'utente, che possono essere modificate. Quindi oggi, voglio farvi una breve introduzione su come chiamare la fotocamera del sistema o l'album delle foto in iOS. Per ottenere la fotocamera del sistema o l'album delle foto, dobbiamo utilizzare la classe UIImagePickerController. Vediamo come implementarlo:
Prima di tutto, è necessario seguire due protocolli di delegato di UIImagePickerController: <UIImagePickerControllerDelegate, UINavigationControllerDelegate>. Perché due protocolli? Clicca con il tasto Command e vedrai che il delegato di UIImagePickerController segue due protocolli.
#import "HeaderPhotoViewController.h" @interface HeaderPhotoViewController () <UIImagePickerControllerDelegate, UINavigationControllerDelegate> @property (nonatomic, strong) UIImageView * imageView; @end @implementation HeaderPhotoViewController - (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"impostazione immagine del profilo"; self.view.backgroundColor = [UIColor whiteColor]; [self setNavigation]; [self addSubviews]; [self makeConstraintsForUI]; } #pragma mark - impostazione della navigazione - (void)setNavigation { self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(selectPhoto:)]; } #pragma mark - azione dell'elemento di navigazione - (void)selectPhoto:(UIBarButtonItem *)itemCamera { //创建UIImagePickerController对象,并设置代理和可编辑 UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init]; imagePicker.editing = YES; imagePicker.delegate = self; imagePicker.allowsEditing = YES; //创建提示框sheet,提示选择相机还是相册 UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"请选择打开方式" message:nil preferredStyle:UIAlertControllerStyleActionSheet]; //选项相机 UIAlertAction * camera = [UIAlertAction actionWithTitle:@"相机" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { //选择相机时,设置UIImagePickerController对象相关属性 imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; imagePicker.modalPresentationStyle = UIModalPresentationFullScreen; imagePicker.mediaTypes = @[(NSString *)kUTTypeImage]; imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto; //跳转到UIImagePickerController控制器弹出相机 [self presentViewController:imagePicker animated:YES completion:nil]; }]]; //相册选项 UIAlertAction * photo = [UIAlertAction actionWithTitle:@"相册" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { //选择相册时,设置UIImagePickerController对象相关属性 imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; //跳转到UIImagePickerController控制器弹出相册 [self presentViewController:imagePicker animated:YES completion:nil]; }]]; //取消按钮 UIAlertAction * cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) { [self dismissViewControllerAnimated:YES completion:nil]; }]]; //添加各个按钮事件 [alert addAction:camera]; [alert addAction:photo]; [alert addAction:cancel]; //弹出sheet提示框 [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]; //获取到的图片 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! Tutti i codici demo sono stati presentati, l'ultimo passo è configurare il file plist, non dimenticare questo, altrimenti potrebbe rompersi. Aggiungi i campi Privacy - Camera Usage Description e Privacy - Photo Library Usage Description nel file plist per chiamare la fotocamera e l'album delle foto. Tutto è pronto, manca solo un iPhone da testare, il test della fotocamera richiede un dispositivo reale.
Questo è tutto il contenuto dell'articolo, speriamo che sia utile per la tua apprendimento e che tu sostenga fortemente la guida Yell.
Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright spetta ai rispettivi autori, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene i diritti di proprietà, non è stato editato manualmente e non assume alcuna responsabilità legale. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare il problema e fornire prove pertinenti. Una volta verificata, questo sito eliminerà immediatamente il contenuto sospetto di violazione del copyright.