首先要實現UIImagePickerControllerDelegate代理
//從系統的圖片庫中添加圖片,會調用他得代理方法
- (IBAction)addPicture:(id)sender {
imagePicker=[[UIImagePickerController alloc]init];
imagePicker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.delegate=self;
imagePicker.allowsEditing=YES;
[self presentViewController:imagePicker animated:YES completion:nil];
}
- (IBAction)photograph:(id)sender {
//先設定sourceType爲相機,然後判斷相機是否可用(ipod)沒相機,不可用將sourceType設定爲相片庫
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
if (![UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = sourceType;
[self presentViewController:picker animated:YES completion:nil];
[picker release];
}
- (void)saveImage:(UIImage *)image {
self.picImageView.image=image;
}
#pragma mark - UIImagePickerControllerDelegate
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissViewControllerAnimated:YES completion:nil];
UIImage *image1 = [[info objectForKey:UIImagePickerControllerEditedImage]retain];
[self performSelector:@selector(saveImage:)
withObject:image1
afterDelay:0.5];
NSURL *imageURL = [info valueForKey:UIImagePickerControllerReferenceURL];
ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
{
ALAssetRepresentation *representation = [myasset defaultRepresentation];
self.imageName = [representation filename];
};
ALAssetsLibrary* assetslibrary = [[[ALAssetsLibrary alloc] init] autorelease];
[assetslibrary assetForURL:imageURL
resultBlock:resultblock
failureBlock:nil];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissViewControllerAnimated:YES completion:nil];
}