To use the built-in camera of the iPhone consider the following example. In this example we will also see how to access the photo library and select a photo and use it.
Create a single view application and assign a name to it. Then in the Main.Storyboard drag an UIImageView and two UIButtons. After that make IBOutlet of UIImageView and IBAction of the UIButtons.
Now in the ViewController.m file implement the following code :-
- (IBAction)btnOpenCamera:(id)sender { // action on the UIButton to use Camera
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
// if camera is not supported by the device then show the alert message
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
UIAlertController *alert=[UIAlertController alertControllerWithTitle:@"ALERT MESSAGE" message:@"Device has no camera" preferredStyle:(UIAlertControllerStyleAlert)];
UIAlertAction *dismissAction=[UIAlertAction actionWithTitle:@"Dismiss" style:(UIAlertActionStyleCancel) handler:^(UIAlertAction * _Nonnull action) {
}];
[alert addAction:dismissAction];
[self presentViewController:alert animated:YES completion:nil];
return;
}
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:NULL];
}
- (IBAction)btnSelectFromPhotoLibrary:(id)sender{ // action on the UIButton to select image from Photo Library
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:picker animated:YES completion:NULL];
}
We need to implement the delegate methods of UIImagePickerController so for that we have to include UIImagePickerControllerDelegate protocol and also we are going to present the camera so, we have to implement the UINavigationControllerDelegate protocol as well.
@interface ViewController : UIViewController <UIImagePickerControllerDelegate,UINavigationControllerDelegate>
Now implement the delegate methods as :-
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
self.imgView.image = chosenImage;
[picker dismissViewControllerAnimated:YES completion:NULL];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:NULL];
}
It’s done !
0 Comment(s)