UIImagePicker用法

在按钮的响应事件里添加:

// 1)初始化UIImagePicker

UIImagePickerController *imagePicker = [[UIImagePickerControlleralloc]init];

 

// 2)设置UIImagePicker的数据源,数据源可以是

// a.照片库 - UIImagePickerControllerSourceTypePhotoLibrary

// b. 保存的图像 - UIImagePickerControllerSourceTypeSavedPhotosAlbum

// c. 照相机 - UIImagePickerControllerSourceTypeCamera

   [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

 

// 3)设置是否允许编辑照片

   [imagePicker setAllowsEditing:YES];

 

// 4)设置代理,代理需要实现两个protocols, 

//       <UINavigationControllerDelegate, UIImagePickerControllerDelegate>

   [imagePicker setDelegate:self];

 

// 5)当前视图控制器展示imagepicker视图

 

   [selfpresentViewController:imagePicker animated:YEScompletion:nil];

 

实现代理方法

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

// info中包含有选择的图片的多种信息,其中也包含有所选的图片,查看UIImagePickerController关于更多info中key的更多具体信息

   UIImage *image = info[@"UIImagePickerControllerEditedImage"];

   [self.buttonsetImage:image forState:UIControlStateNormal];

   

   [selfdismissViewControllerAnimated:YEScompletion:^{

// 通过image picker选择的照片只是保存在内存中,如果要持久保存,需要把所选照片存储起来,然后在viewDidLoad中读取并做响应设置。

      NSArray *documents = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

      NSString *path = [documents[0] stringByAppendingPathComponent:IMAGE_FILE_NAME];

      NSLog(@"%@", path);

      

// UIImage无法直接存储,需要通过NSData做中转,可以通过以下方法把UIImage转化成NSData。

      NSData *imageData = UIImagePNGRepresentation(image);

 

// 将image的NSData写入到硬盘里      

      [imageData writeToFile:path atomically:NO];

   }];

 

}

 

最后在ViewDidLoad中读取照片并做相关处理

你可能感兴趣的:(UIImagePicker用法)