iOS
UIImagePickerController
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];
}