Conţinut
Web Designer, iOS, dezvoltator de aplicații mobile Android. Din Italia cu Iubire.
Declinarea responsabilității
Vă rugăm să nu uitați să testați codul acestui tutorial pe un dispozitiv real, deoarece iOS Simulator nu se ocupă de cameră.
Am făcut un proiect demonstrativ care arată astfel:
Proiectul meu eșantion are 3 butoane în controlerul principal:
- Camera deschisa
- Deschideți Photo Library
- Salvați
Să începem prin a adăuga cei doi delegați necesari pentru ca acest tutorial să funcționeze, trebuie să îi plasați în clasa ViewController:
clasa ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
Am adăugat selectorul de imagini și delegații controlerului de navigație în codul nostru, acestea sunt incluse în cadrul UIKit, astfel încât să nu trebuie să importați niciun fișier suplimentar în pagina dvs. rapidă.
În proiectul meu de eșantion, a trebuit să creăm și o vizualizare a imaginii pentru a o utiliza mai târziu:
@IBOutlet slab var imagePicked: UIImageView!
Verificați următorul cod, magia care deschide camera pe dispozitivul dvs.:
@IBAction func openCameraButton (expeditor: AnyObject) {if UIImagePickerController.isSourceTypeAvailable (.camera) {var imagePicker = UIImagePickerController () imagePicker.delegate = self imagePicker.sourceType = .camera; imagePicker.allowsEditing = false self.presentViewController (imagePicker, animat: adevărat, finalizare: nul)}}
Ce face codul de mai sus? O vom explica rând cu rând:
- O instanță IBAction pentru buton, creată de ctrl + glisare de la butonul Deschidere cameră la pagina noastră ViewController.swift
- Verificați dacă Camera este disponibilă pe dispozitiv (ca tip de sursă)
- Aici declarăm o variabilă a controlerului de selectare a imaginilor
- Setați-l pe delegat
- Setați tipul sursei
- Aici îi spunem selectorului nostru de imagini să nu editeze o fotografie capturată, ceea ce înseamnă că nu vom primi ecranul negru cu un cadru pătrat imediat după ce ați făcut o fotografie.
- În cele din urmă, vă prezentăm controlerul camerei, acesta va apărea din partea de jos a ecranului, care este animația implicită iOS pentru deschiderea de noi ecrane.
Rulați proiectul, atingeți butonul și veți obține așa ceva:
Dispozitivul solicită accesarea camerei Acum, să vedem cum să funcționăm butonul Open Photo Library: @IBAction func openPhotoLibraryButton (expeditor: AnyObject) {if UIImagePickerController.isSourceTypeAvailable (.photoLibrary) {var imagePicker = UIImagePickerController () imagePicker.delegate = self imagePicker.sourceType =. imagePicker.allowsEditing = adevărat self.presentViewController (imagePicker, animat: adevărat, finalizare: nul)}} Explicarea codului: Rulați proiectul și atingeți butonul, veți obține următoarele rezultate: Acum trebuie să adăugăm un delegat la clasa noastră, pentru a spune aplicației noastre să obțină imaginea aleasă și să o plaseze în vizualizarea imaginii pe care am plasat-o pe ecranul principal. Vă rugăm să rețineți că următorul delegat va fi utilizat pentru ambele funcții ale acestui șablon: func imagePickerController (_ selector: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: AnyObject]) {let image = info [UIImagePickerControllerOriginalImage] ca! UIImage imagePicked.image = respingerea imaginii (animat: adevărat, finalizare: nul)} Ne lipsește doar metoda butonului Salvare pentru a finaliza acest tutorial: @IBAction func saveButt (expeditor: AnyObject) {var imageData = UIImageJPEGRepresentation (imagePicked.image, 0.6) var compressedJPGImage = UIImage (data: imageData) UIImageWriteToSavedPhotosAlbum (compressedJPGImage, nil, nil, NIA, , mesaj: „Imaginea dvs. a fost salvată în fototeca!”, delegat: nil, cancelButtonTitle: „Ok”) alert.show ()} Linie cu linie: Am terminat, puteți rula proiectul și vă puteți juca cu butoane, după ce ați închis controlerul selector de imagini, veți vedea imaginea aleasă și o veți salva în biblioteca foto: