iOS调用相册

对于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];

}

原文地址:https://www.cnblogs.com/lx-hhxxttxs/p/4683132.html