您的位置:首页 > 移动开发 > IOS开发

iOS调用相册

2015-07-29 10:27 106 查看
对于ios调用相册,首先要确定但前场景就是程序运行的场景,如果不是,需要讲场景添加到当前场景

获取当前场景并将场景添加到当前场景

  

RootViewController* vc = (RootViewController*)viewController;

UIViewController *vcNow = [vc getCurrentVC];
[vcNow.view addSubview:vc.view];
UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:(@"res/CSres/public/publicUI/public_head.png")]];
[vc setHeadPicture:iv];

//获取当前场景代码

- (UIViewController *)getCurrentVC

{

UIViewController *result = nil;

UIWindow * window = [[UIApplication sharedApplication] keyWindow];

if (window.windowLevel != UIWindowLevelNormal)

{

NSArray *windows = [[UIApplication sharedApplication] windows];

for(UIWindow * tmpWin in windows)

{

if (tmpWin.windowLevel == UIWindowLevelNormal)

{

window = tmpWin;

break;

}

}

}

UIView *frontView = [[window subviews] objectAtIndex:0];

id nextResponder = [frontView nextResponder];

if ([nextResponder isKindOfClass:[UIViewController class]])

result = nextResponder;

else

result = window.rootViewController;

return result;

}

//获取当前场景代码//////

调用相册::///RootViewController(方法中)

- (void) setHeadPicture:(UIImageView*) iv

{

self.imageV = iv;

[iv release];

[self.view addSubview:self.imageV];

NSLog(@"%s","setHeadPicture");

UIImagePickerController *pickerImage = [[UIImagePickerController alloc] init];

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {

pickerImage.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

// pickerImage.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;

pickerImage.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:pickerImage.sourceType];

}

pickerImage.delegate = self;

pickerImage.allowsEditing = NO;

[self presentModalViewController:pickerImage animated:YES];

[pickerImage release];

}

添加调用相册的回调(这些方法不需要定义在类中,直接实现)

//把图片添加到当前view中

- (void)saveImage:(UIImage *)image {

//保存

NSLog(@"%s","saveImage");

self.imageV.image = image;

}

#pragma mark –

#pragma mark Camera View Delegate Methods

//点击相册中的图片或者照相机照完后点击use 后触发的方法

- (void)imagePickerController:(UIImagePickerController *)picker

didFinishPickingMediaWithInfo:(NSDictionary *)info {

NSLog(@"***info == %@",info);

UIImage *image;

if (picker.sourceType == UIImagePickerControllerSourceTypePhotoLibrary){//如果打开相册

[self.imagePicker dismissPopoverAnimated:YES];//关掉相册

image = [[info objectForKey:UIImagePickerControllerOriginalImage] retain];

NSLog(@"***333%@",image);

}

else{//照相机

[picker dismissModalViewControllerAnimated:YES];//关掉照相机

image = [[info objectForKey:UIImagePickerControllerEditedImage] retain];

NSLog(@"***222%@",image);

}

[picker dismissModalViewControllerAnimated:YES];//关掉照相机

NSLog(@"***111%@",image);

UIImageWriteToSavedPhotosAlbum(image, self, NULL, NULL);

//保存图片到app document

NSData* imageData = UIImagePNGRepresentation(image);

NSString* documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

NSString* totalPath = [documentPath stringByAppendingPathComponent:@"aabbcc.png"];

[imageData writeToFile:totalPath atomically:NO];//将图片保存在当前应用程序下的docoment中

[imageData writeToURL:[NSURL fileURLWithPath:@""] atomically:NO];

NSLog(@"***%@",totalPath);

// [UIImage ]

//把选中的图片添加到界面中

[self performSelector:@selector(saveImage:)

withObject:image

afterDelay:0.5];

}

//点击cancel调用的方法

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

[picker dismissModalViewControllerAnimated:YES];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: