UIImagePickerController图像拾取器

UIImagePickerController是一种导航控制器,使用它,用户可以打开系统的图片选取器或者打开相机进行拍照。实现协议UIImagePickerDelegate中定义的委托方法可以对选定后的结果进行操作,或是没有选择取消的操作。


UIImagePickerController有三个图片源:

UIImagePickerControllerSourceTypePhotoLibrary:照片库

UIImagePickerControllerSourceTypeCamera:使用相机拍摄的新图片

UIImagePickerControllerSourceTypeSavedPhotosAlbum:相机胶卷


另外,显示选择图像视图器之前要确保图像源是否可用,可以使用isSourceTypeAvailable方法来检验


详情在代码中有注释,上代码:

ViewController.h

[cpp]  view plain copy
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface ViewController : UIViewController<UIImagePickerControllerDelegate,UINavigationControllerDelegate]]>//打开模态视图控制器用到了导航控制器的委托方法  
  4. @property (retain, nonatomic) IBOutletUIImageView *imageView;  
  5.   
  6. @end  
  7.   
  8. ViewController.m  
  9. #import "ViewController.h"  
  10.   
  11. @interface ViewController ()  
  12. {  
  13.   
  14. }  
  15. @end  


[cpp]  view plain copy
  1. @implementation ViewController  
  2. @synthesize imageView;  
  3.   
  4. - (void)viewDidLoad  
  5. {  
  6.     [superviewDidLoad];  
  7. // 通过代码构建按钮  
  8.     UIButton *pickerImageBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];  
  9.     pickerImageBtn.frame = CGRectMake(90, 100, 150, 50);  
  10.     [pickerImageBtn setTitle:@"打开相册" forState:UIControlStateNormal];  
  11.     //指定单击事件  
  12.     [pickerImageBtn addTarget:self action:@selector(openImage)  forControlEvents:UIControlEventTouchUpInside];  
  13.     [self.viewaddSubview:pickerImageBtn];  
  14. }  
  15.   
  16. /* 
  17.  点击按钮后的事件 
  18.  */  
  19. -(void)openImage  
  20. {  
  21.     //把状态栏隐藏起来  
  22. //    UIApplication *app = [UIApplication sharedApplication];  
  23. //    app.statusBarHidden = YES;  
  24.       
  25.     //构建图像选择器  
  26.     UIImagePickerController *pickerController = [[UIImagePickerControlleralloc] init];  
  27.     //设置代理为本身(实现了UIImagePickerControllerDelegate协议)  
  28.     pickerController.delegate = self;  
  29.     //是否允许对选中的图片进行编辑  
  30.     pickerController.allowsEditing = YES;  
  31.       
  32.     //设置图像来源类型(先判断系统中哪种图像源是可用的)  
  33.     if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {  
  34.         pickerController.sourceType = UIImagePickerControllerSourceTypeCamera;  
  35.     }elseif([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]){  
  36.         pickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;  
  37.     }else {  
  38.         pickerController.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;  
  39.     }  
  40.     //打开模态视图控制器选择图像  
  41.     [selfpresentModalViewController:pickerController animated:YES];  
  42. }  
  43.   
  44. /* 
  45.  选取成功后在界面上进行显示 
  46.  */  
  47. -(void)editedImage:(UIImage *)image  
  48. {  
  49.     NSLog(@"选择成功");  
  50.     [imageViewsetImage:image];  
  51. }  
  52.   
  53. #pragma -  
  54. #pragma Delegate methods  
  55. -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo  
  56. {  
  57.     [picker dismissModalViewControllerAnimated:YES];  
  58.     [selfperformSelector:@selector(editedImage:) withObject:image afterDelay:.5];  
  59. }  
  60.   
  61. -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker  
  62. {  
  63.     NSLog(@"取消选择");  
  64.     [picker dismissModalViewControllerAnimated:YES];  
  65. }  
  66.   
  67. - (void)viewDidUnload  
  68. {  
  69.     [selfsetImageView:nil];  
  70.     [superviewDidUnload];  
  71.     // Release any retained subviews of the main view.  
  72. }  
  73.   
  74. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
  75. {  
  76.     return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);  
  77. }  
  78.   
  79. - (void)dealloc {  
  80.     [imageViewrelease];  
  81.     [superdealloc];  
  82. }  
  83. @end  

最后看看运行效果:

                


转自:http://blog.csdn.net/ryantang03/article/details/7805323

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值