2016-06-18 17 views
0

Mein Code:Swift 3 - Kann nicht außer Kraft setzen 'imagePickerController'

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) { 
    self.image = image 
    self.imageStatusLabel.text = "There is a picture" 
    self.imageStatusLabel.textColor = UIColor.blue() 

    picker.dismiss(animated: true, completion: nil) 
} 

Und das ist der Fehler:

Cannot override 'imagePickerController' which has been marked unavailable: APIs deprecated as of iOS 7 and earlier are unavailable in Swift

Nun, ich habe versucht, die neuere Funktion zu verwenden:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    // But no image in the parameters 
} 

Aber dann gibt es kein Bild in den Parametern und ich kann das Bild bekommen.
Was soll ich tun?

Antwort

1

Sie erhalten das Bild aus dem info Wörterbuch übergeben, sehen die Schlüssel in der documentation

Sie wollen wahrscheinlich entweder

let image = info[UIImagePickerControllerOriginalImage] as? UIImage 

oder

let image = info[UIImagePickerControllerEditedImage] as? UIImage 
11

Sie haben die Info-Parameter verwenden und mache einen Cast zu UIImage. Vergessen Sie nicht, dass Sie eine "Privacy - Photo Library Usage Description" und eine "Privacy - Camera Usage Description" in die Datei setzen müssen und füllen Sie die Werte mit einer Zeichenfolge, die den Grund für den Zugriff auf Fotobibliothek und Kamera erläutert.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
     pictureImageView.contentMode = .scaleToFill 
     pictureImageView.image = pickedImage 
    } 

    picker.dismiss(animated: true, completion: nil) 
} 
2

Um imagePickerController in Swift3 benötigen Sie eine Zeile mit Schlüssel hinzu: Privacy - Photo Library Usage Description und Wert ist ein string (zB: „Zugriff auf Ihre Fotos“) zu Info.plist Datei und lassen Sie uns unten probieren:

class YourController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

    let imagePickerButton: UIButton = { 
     let btn = UIButton(frame: CGRect(x: 10, y: 10, width: 100, height: 100)) 
     btn.setTitle("Choose a Photo", for: .normal) 
     btn.setTitleColor(.white, for: .normal) 
     btn.backgroundColor = .blue 
     btn.addTarget(self, action: #selector(handlePickerDidTap), for: .touchUpInside) 

     return btn 
    }() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     view.addSubview(imagePickerButton) 
    } 

    func handlePickerDidTap() { 
     let imagePickerController = UIImagePickerController() 
     imagePickerController.delegate = self 
     imagePickerController.allowsEditing = true 
     present(imagePickerController, animated: true, completion: nil) 
    } 

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
     print("photo is selected") 
     // do some thing here 
    } 

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
     dismiss(animated: true, completion: nil) 
    } 

} 

Hoffen Sie, dass es hilft!

0
import UIKit 
import Photos 

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

@IBOutlet weak var imageView: UIImageView! 

@IBAction func selectPhotoLibrary(_ sender: Any) { 
    let picker = UIImagePickerController() 
    picker.delegate = self 
    if UIImagePickerController.isSourceTypeAvailable(.camera) { 
     picker.sourceType = .camera 
    } else{ 
     print("Kamera desteklenmiyor.") 
    } 
    present(picker, animated: true, completion:nil) 
} 

@IBAction func selectPhotoCamera(_ sender: Any) { 
    let picker = UIImagePickerController() 
    picker.delegate = self 
    picker.sourceType = .photoLibrary 
    present(picker, animated: true, completion:nil) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    picker.dismiss(animated: true, completion:nil) 
    guard let image = info[UIImagePickerControllerOriginalImage] as? UIImage else { return } 
    guard let imageData = UIImageJPEGRepresentation(image, 0.8) else { return } 
    self.imageView.image = image 
    print(imageData) 
} 

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    picker.dismiss(animated: true, completion:nil) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
    } 
} 

Lesen Sie mehr für die Nutzung Detail ->https://medium.com/@yakupad/swift-uiimagepickercontroller-kullanımı-91771ed4c1d6

Verwandte Themen