【问题标题】:Take twice photos with UIImagePickerController使用 UIImagePickerController 拍摄两次照片
【发布时间】:2015-03-30 13:55:56
【问题描述】:

在我的应用程序中,我正在使用 UIImagePickerController 拍照,当拍照时,应用程序会显示另一个视图控制器,在该控制器中,我让用户可以将农场添加到他的照片中。在这个视图控制器中我会给用户重新拍照的机会,所以我创建了一个按钮来调用 UIImagePickerController,我使用了以下代码:

- (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,我可以在不看相机的情况下拍照。为什么它不起作用?怎么了?还有其他方法可以重拍吗?谢谢

【问题讨论】:

    标签: ios objective-c uiimagepickercontroller


    【解决方案1】:

    首先关闭之前呈现的 imagePickerController。然后在完成时尝试呈现新的 imagePickerController。

    【讨论】:

    • 没问题我之前也在同一件事上挣扎过很多次:)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      相关资源
      最近更新 更多