Sök…


Introduktion

UIImagePickerController tillhandahåller en nästan utlösningslösning så att användaren kan välja en bild från sin enhet eller ta en bild med kameran och sedan presentera den bilden. Genom att följa UIImagePickerControllerDelegate kan du skapa en logik som anger i din app hur man ska presentera bilden och vad man ska göra med den (med didFinishPickingMediaWithInfo) och även vad man ska göra om användaren avvisar att välja en bild eller ta en bild (med bildPickerControllerDidCancel ).

Generisk användning av UIImagePickerController

Steg 1: Skapa kontrollern, ställ in delegaten och överensstämma med protokollet

//Swift
class ImageUploadViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    
    let imagePickerController = UIImagePickerController()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        imagePickerController.delegate = self
    }
}

//Objective-C
@interface ImageUploadViewController : UIViewController <UIImagePickerControllerDelegate,UINavigationControllerDelegate> {

    UIImagePickerController *imagePickerController;

}

@end

@implementation ImageUploadViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    imagePickerController.delegate = self;

}

@end

Obs: Vi kommer faktiskt inte att implementera något som definieras i UINavigationControllerDelegate , men UIImagePickerController ärver från UINavigationController och ändrar beteendet hos UINavigationController . Därför måste vi fortfarande säga att vår UINavigationControllerDelegate överensstämmer med UINavigationControllerDelegate .

Steg 2: När du behöver visa UIImagePickerController :

//Swift
self.imagePickerController.sourceType = .Camera // options: .Camera , .PhotoLibrary , .SavedPhotosAlbum
self.presentViewController(self.imagePickerController, animated: true, completion: nil)

//Objective-C
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; // options: UIImagePickerControllerSourceTypeCamera, UIImagePickerControllerSourceTypePhotoLibrary, UIImagePickerControllerSourceTypeSavedPhotosAlbum
[self presentViewController:imagePickerController animated:YES completion:nil];

Steg 3: Implementera delegerade metoder:

//Swift
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
        // Your have pickedImage now, do your logic here
    }
    self.dismissViewControllerAnimated(true, completion: nil)
}

func imagePickerControllerDidCancel(picker: UIImagePickerController) {
    self.dismissViewControllerAnimated(true, completion: nil)
}

//Objective-C
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

   UIImage *pickedImage = info[UIImagePickerControllerOriginalImage];

    if (pickedImage) {
    
        //You have pickedImage now, do your logic here
    
    }

    [self dismissViewControllerAnimated:YES completion:nil];

}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

    [self dismissViewControllerAnimated:YES completion:nil];

}


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow