首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与UIImagePickerController合影两次

与UIImagePickerController合影两次
EN

Stack Overflow用户
提问于 2015-03-30 13:55:56
回答 2查看 157关注 0票数 0

在我的应用程序中,我使用UIImagePickerController拍照,当图片被拍摄时,应用程序显示了另一个视图控制器,在该控制器中,我给用户提供了在其图片中添加一个农场的可能性。在这个视图控制器中,我将给用户重拍图片的机会,所以我创建了一个按钮来回忆UIImagePickerController,我使用了以下代码:

代码语言:javascript
复制
- (IBAction)buttonRetakePic:(UIBarButtonItem *)sender {
    UIImagePickerController *picker = [[UIImagePickerController alloc]init];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
    [self presentViewController:picker animated:YES completion:nil];
}

#pragma mark imagePicker delegate
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    NSError *error;

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:@"/Immagini"];

    if (![[NSFileManager defaultManager] fileExistsAtPath:imagePath]) {
        [[NSFileManager defaultManager] createDirectoryAtPath:imagePath withIntermediateDirectories:NO attributes:nil error:&error];
    }

    NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:imagePath error:nil];
    long count = [fileList count];
    NSString *filename = [NSString stringWithFormat:@"Nivea_%ld.jpg", count++];
    NSString *imagePathWithFileName = [imagePath stringByAppendingPathComponent:filename];
    [[NSUserDefaults standardUserDefaults]setObject:filename forKey:@"Filename"];
    [[NSUserDefaults standardUserDefaults] synchronize];

    UIImage *picture = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    NSData *thumbData = UIImageJPEGRepresentation(picture, 1);
    [thumbData writeToFile:imagePathWithFileName atomically:YES];

    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc = [storyBoard instantiateViewControllerWithIdentifier:@"Picture"];
    [[[[UIApplication sharedApplication] delegate] window] setRootViewController:vc];
}

但是当我按下buttonBack时,它会给我看老照片的UIImagePickerController,我可以在不看摄像头的情况下拍照。为什么不起作用?怎么了?还有别的方法可以重拍照片吗?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-30 14:13:32

首先,驳回先前提出的imagePickerController。最后,尝试展示新的imagePickerController。

票数 1
EN

Stack Overflow用户

发布于 2015-03-30 14:03:28

你只是在回忆你的UIImagePicker,它不会打开一个新的。您将不得不丢弃您所收到的数据。或者重新加载数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29348070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档