Inhalt
Entwickler von Webdesignern, iOS- und Android-Apps für Mobilgeräte. Mit Liebe aus Italien.
Haftungsausschluss
Bitte denken Sie daran, den Code dieses Tutorials auf einem realen Gerät zu testen, da der iOS-Simulator die Kamera nicht handhabt.
Ich habe ein Demo-Projekt erstellt, das so aussieht:
Mein Beispielprojekt hat 3 Schaltflächen im Hauptcontroller:
- Kamera öffnen
- Öffnen Sie die Fotobibliothek
- speichern
Beginnen wir mit dem Hinzufügen der beiden Delegaten, die für dieses Lernprogramm erforderlich sind. Sie müssen sie in Ihre ViewController-Klasse einfügen:
Klasse ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
Ich habe die Delegatoren für Bildauswahl und Navigationssteuerung zu unserem Code hinzugefügt. Sie sind im UIKit-Framework enthalten, sodass Sie keine zusätzliche Datei in Ihre schnelle Seite importieren müssen.
In meinem Beispielprojekt mussten wir auch eine Bildansicht erstellen, um sie später verwenden zu können:
@IBOutlet schwach var imagePicked: UIImageView!
Schauen Sie sich den folgenden Code an, es ist die Magie, die die Kamera auf Ihrem Gerät öffnet:
@IBAction func openCameraButton (Absender: AnyObject) {if UIImagePickerController.isSourceTypeAvailable (.camera) {var imagePicker = UIImagePickerController () imagePicker.delegate = self imagePicker.sourceType = .camera; imagePicker.allowsEditing = false self.presentViewController (imagePicker, animiert: true, Vervollständigung: nil)}}
Was macht der obige Code? Wir werden es Zeile für Zeile erklären:
- Eine IBAction-Instanz für die Schaltfläche, die mit Strg + Ziehen von der Schaltfläche "Kamera öffnen" auf unsere Seite "ViewController.swift" erstellt wurde
- Überprüfen Sie, ob die Kamera auf dem Gerät verfügbar ist (als Quelltyp).
- Hier deklarieren wir eine Variable des Image Picker Controllers
- Legen Sie den Delegaten fest
- Stellen Sie den Quelltyp ein
- Hier weisen wir unseren Bildwähler an, kein aufgenommenes Bild zu bearbeiten. Dies bedeutet, dass der schwarze Bildschirm mit einem quadratischen Rahmen nicht direkt nach dem Aufnehmen eines Fotos angezeigt wird.
- Schließlich stellen wir den Kameracontroller vor, der am unteren Bildschirmrand angezeigt wird. Dies ist die Standard-iOS-Animation zum Öffnen neuer Bildschirme.
Führen Sie das Projekt aus, tippen Sie auf die Schaltfläche und Sie erhalten Folgendes:
Das Gerät fordert Sie auf, auf die Kamera zuzugreifen Lassen Sie uns nun sehen, wie die Schaltfläche "Fotobibliothek öffnen" funktioniert: @IBAction func openPhotoLibraryButton (Absender: AnyObject) {if UIImagePickerController.isSourceTypeAvailable (.photoLibrary) {var imagePicker = UIImagePickerController () imagePicker.delegate = self imagePicker.sourceType = .photo; imagePicker.allowsEditing = true self.presentViewController (imagePicker, animiert: true, Vervollständigung: null)}} Code-Erklärung: Führen Sie das Projekt aus und tippen Sie auf die Schaltfläche. Sie erhalten die folgenden Ergebnisse: Wir müssen jetzt einen Delegaten zu unserer Klasse hinzufügen, um unsere App anzuweisen, das ausgewählte Bild abzurufen und es in die Bildansicht zu platzieren, die wir auf dem Hauptbildschirm platziert haben. Bitte beachten Sie, dass der folgende Delegat für beide Funktionen dieser Vorlage verwendet wird: func imagePickerController (_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: AnyObject]) {let image = info [UIImagePickerControllerOriginalImage] as! UIImage imagePicked.image = Bild entlassen (animiert: true, Vervollständigung: nil)} Wir vermissen nur die Methode Speichern, um dieses Tutorial abzuschließen: @IBAction func saveButt (Absender: AnyObject) {var imageData = UIImageJPEGRepresentation (imagePicked.image, 0.6) var compressJPGImage = UIImage (Daten: imageData) UIImageWriteToSavedPhotosAlbum (compressJPGImage, nil " , Nachricht: "Ihr Bild wurde in der Fotobibliothek gespeichert!", Delegat: nil, cancelButtonTitle: "Ok") alert.show ()} Zeile für Zeile: Wenn Sie fertig sind, können Sie das Projekt ausführen und mit Schaltflächen spielen. Nachdem Sie den Bildauswahl-Controller geschlossen haben, wird das ausgewählte Bild angezeigt und in der Fotobibliothek gespeichert: