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

iOS-Entwicklung-Beispiel zur Verwendung des Systems Kamera und Galerie, um Fotos zu erhalten

Einleitung: Ich glaube, dass die meisten von Ihnen wissen, dass die meisten Apps Module von mir enthalten, und in meinen Modulen gibt es in der Regel Benutzerprofile und Informationen wie das Profilbild, das geändert werden kann. Daher werde ich Ihnen heute eine einfache Einführung in die Methoden zur Verwendung des UIImagePickerController geben, um ein Bild von der Kamera oder dem Album abzurufen. Um das Systemkamera oder das Album abzurufen, müssen wir die Klasse UIImagePickerController verwenden. Nachfolgend sehen wir, wie dies umgesetzt wird:

Zunächst muss der UIImagePickerController-Agent zwei Protokolle befolgen: <UIImagePickerControllerDelegate, UINavigationControllerDelegate>. Warum sind das zwei Protokolle? Drücken Sie die Command-Taste und klicken Sie auf den delegate des UIImagePickerController, um zu entdecken, dass dieser Agent tatsächlich zwei Protokolle befolgt.

#import "HeaderPhotoViewController.h"
@interface HeaderPhotoViewController () <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@property (nonatomic, strong) UIImageView * imageView;
@end
@implementation HeaderPhotoViewController
- (void)viewDidLoad {
  [super viewDidLoad];
  self.navigationItem.title = @"头像设置";
  self.view.backgroundColor = [UIColor whiteColor];
  [self setNavigation];
  [self addSubviews];
  [self makeConstraintsForUI];
}
#pragma mark - Navigation einstellen
- (void)setNavigation {
  self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(selectPhoto:)];
}
#pragma mark - Navigationsleistenauswahlaktion
- (void)selectPhoto:(UIBarButtonItem *)itemCamera {
  //Erstellen Sie ein UIImagePickerController-Objekt und stellen Sie das Delegate und die Bearbeitbarkeit ein
  UIImagePickerController * imagePicker = [[UIImagePickerController alloc] init];
  imagePicker.editing = YES;
  imagePicker.delegate = self;
  imagePicker.allowsEditing = YES;
  //Erstelle ein Blatt-Hinweisfenster, um die Auswahl zwischen Kamera und Album anzuzeigen
  UIAlertController * alert = [UIAlertController alertControllerWithTitle:@"Bitte wählen Sie die Öffnungsart aus" message:nil preferredStyle:UIAlertControllerStyleActionSheet];
  //Kamera-Optionen
  UIAlertAction * camera = [UIAlertAction actionWithTitle:@"相机" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    //Setze bei der Auswahl der Kamera die zugehörigen Eigenschaften des UIImagePickerController-Objekts.
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    imagePicker.modalPresentationStyle = UIModalPresentationFullScreen;
    imagePicker.mediaTypes = @[(NSString *);kUTTypeImage];
    imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
    //Springe zum UIImagePickerController-Controller und öffne die Kamera.
    [self presentViewController:imagePicker animated:YES completion:nil];
  }]
  //Album-Optionen
  UIAlertAction * photo = [UIAlertAction actionWithTitle:@"相册" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    //Setze bei der Auswahl des Albums die zugehörigen Eigenschaften des UIImagePickerController-Objekts.
    imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    //Springe zum UIImagePickerController-Controller und öffne das Album.
    [self presentViewController:imagePicker animated:YES completion:nil];
  }]
  //Abbrechen-Taste
  UIAlertAction * cancel = [UIAlertAction actionWithTitle:@"Abbrechen" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
    [self dismissViewControllerAnimated:YES completion:nil];
  }]
  //Füge die Ereignisse der verschiedenen Schaltflächen hinzu
  [alert addAction:camera];
  [alert addAction:photo];
  [alert addAction:cancel];
  //Zeige das Pop-up-Fenster zur Auswahl des Blattes
  [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];
  //Das Bild, das erhalten wurde
  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! Alle Codes des demos wurden vorgestellt, der letzte Schritt ist die Konfiguration der plist-Datei. Vergessen Sie das nicht, sonst könnte es zusammenbrechen. Fügen Sie das Feld Privacy zum Aufrufen der Kamera in die plist-Datei hinzu - Verwendungsbeschreibung der Kamera und das Feld zum Aufrufen des Galerie: Datenschutz - Verwendungsbeschreibung der Fotolibrary. Alles ist bereit, nur ein Test-Apple-Smartphone fehlt, die Kamera-Tests erfordern die Verwendung eines echten Geräts.

Das ist der gesamte Inhalt dieses Artikels. Ich hoffe, er hilft Ihnen bei Ihrem Lernen und ich hoffe, dass Sie die Anleitung von Rufen stark unterstützen.

Erklärung: Der Inhalt dieses Artikels stammt aus dem Internet und ist dem ursprünglichen Eigentümer gehören, der von Internetbenutzern freiwillig beigesteuert und hochgeladen wurde. Diese Website besitzt keine Eigentumsrechte, hat den Inhalt nicht manuell bearbeitet und trägt keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige Inhalte entdecken, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden:3codebox.com (Bitte ersetzen Sie # durch @, wenn Sie eine Beschwerde einreichen, und fügen Sie relevante Beweise bei. Sobald überprüft, wird die Website den verdächtigen Inhalten sofort löschen.)

Gefällt mir