在项目开发的过程当中,咱们常常会使用的iPhone 或者 iPad 的拍照功能,好比给用户设置头像,通常都会用到拍照功能。咱们能够使用UIImagePickerController 类来调用iPhone的摄像头进行拍照或者录视频。iOS 已经为咱们封装好了UIImagePickerController ,使用很简单,让咱们不用花费不少时间就能够调用拍照功能。使用UIImagePickerController时,须要实现UIImagePickerController协议。 app
在xib中添加一个按钮,绑定按钮的响应事件,在响应事件中添加以下代码: atom
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera; //判断是否有摄像头 if(![UIImagePickerController isSourceTypeAvailable:sourceType]) { sourceType = UIImagePickerControllerSourceTypePhotoLibrary; } UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; imagePickerController.delegate = self; // 设置委托 imagePickerController.sourceType = sourceType; imagePickerController.allowsEditing = YES; [self presentViewController:imagePickerController animated:YES completion:nil]; //须要以模态的形式展现 [imagePickerController release];记得要实现UIImagePickerControllerDelegate 中 的- ( void )imagePickerController:( UIImagePickerController *)picker didFinishPickingMediaWithInfo:( NSDictionary *)info 和
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 两个方法,分别时拍照完成的时候调用 和 取消拍照的时候调用。代码以下: spa
#pragma mark - #pragma mark UIImagePickerController Method //完成拍照 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [picker dismissViewControllerAnimated:YES completion:^{}]; UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; if (image == nil) image = [info objectForKey:UIImagePickerControllerOriginalImage]; [self performSelector:@selector(saveImage:) withObject:image]; } //用户取消拍照 -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { [picker dismissViewControllerAnimated:YES completion:nil]; } //将照片保存到disk上 -(void)saveImage:(UIImage *)image { NSData *imageData = UIImagePNGRepresentation(image); if(imageData == nil) { imageData = UIImageJPEGRepresentation(image, 1.0); } NSDate *date = [NSDate date]; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyyMMddHHmmss"]; _fileName = [[[formatter stringFromDate:date] stringByAppendingPathExtension:@"png"] retain]; NSURL *saveURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:_fileName]; [imageData writeToURL:saveURL atomically:YES]; }