English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Esempio di chiamata alla fotocamera e alla galleria del sistema in iOS per ottenere foto

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.

Ti potrebbe interessare