iOS
UIImagePickerController
Поиск…
Вступление
UIImagePickerController предоставляет почти готовое решение, позволяющее пользователю выбирать изображение с их устройства или делать снимок с помощью камеры, а затем представлять это изображение. Согласившись с UIImagePickerControllerDelegate, вы можете создать логику, которая указывает в вашем приложении, как представить изображение и что с ним делать (используя didFinishPickingMediaWithInfo), а также что делать, если пользователь отказывается выбирать изображение или делать снимок (используя imagePickerControllerDidCancel ).
Общее использование UIImagePickerController
Шаг 1. Создайте контроллер, установите делегат и совместите его с протоколом.
//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
note: Мы фактически ничего не реализуем в UINavigationControllerDelegate
, но UIImagePickerController
наследует от UINavigationController
и изменяет поведение UINavigationController
. Поэтому нам все равно нужно сказать, что наш контроллер просмотра соответствует UINavigationControllerDelegate
.
Шаг 2. Когда вам нужно показать 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];
Шаг 3: Внедрите методы делегата:
//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];
}