【问题标题】:Capturing and saving a picture using UIImagePickerController with custom overlay使用带有自定义叠加层的 UIImagePickerController 捕获和保存图片
【发布时间】:2015-01-31 19:19:18
【问题描述】:

我按照苹果文档的方法使用UIImagePickerController 和自定义叠加层。现在它很简单,我在覆盖视图上只有一个按钮。这个按钮的目标是takePic。唯一的问题是,由于我没有使用默认的相机控件,因此在捕获图片后永远不会调用 imagePickerController 委托方法,

- (void) imagePickerController:(UIImagePickerController *)picker
 didFinishPickingMediaWithInfo:(NSDictionary *)info 

我认为这个方法通常在用户拍摄照片并点击“选择照片”后在默认叠加层上调用。然而,在这个叠加层中,我想要的只是一个“拍照”按钮,它可以拍照并保存它。

这是我的代码:

-(void)takePic
{
    [cameraUI takePicture];
    NSLog(@"take pic called");
}

// For responding to the user accepting a newly-captured picture or movie
- (void) imagePickerController: (UIImagePickerController *) picker
 didFinishPickingMediaWithInfo: (NSDictionary *) info {
    NSLog(@"Finished picking media");
    NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
    UIImage *originalImage, *imageToSave;

    // Handle a still image capture
    if (CFStringCompare ((CFStringRef) mediaType, kUTTypeImage, 0)
        == kCFCompareEqualTo) {
        originalImage = (UIImage *) [info objectForKey:
                                     UIImagePickerControllerOriginalImage];

        imageToSave = originalImage;
        NSLog(@"image Saved");

        // Save the new image (original or edited) to the Camera Roll
        UIImageWriteToSavedPhotosAlbum (imageToSave, nil, nil , nil);
    }

    // Handle a movie capture
    if (CFStringCompare ((CFStringRef) mediaType, kUTTypeMovie, 0)
        == kCFCompareEqualTo) {

        NSString *moviePath = [[info objectForKey:
                                UIImagePickerControllerMediaURL] path];

        if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) {
            UISaveVideoAtPathToSavedPhotosAlbum (
                                                 moviePath, nil, nil, nil);
        }
    }

    [[picker parentViewController] dismissModalViewControllerAnimated: YES];
}

正如我之前提到的,imagePickerController:didFinishPickingMediaWithInfo: 永远不会被调用。如何将图片保存到相机胶卷?

【问题讨论】:

  • 你设置代理了吗?
  • 是的,我将 cameraUI 的委托设置为 self (ViewController)。

标签: ios objective-c


【解决方案1】:

您是否将您的对象作为您的ImagePickerdelegate

如果您的 cameraUI 是您的 (UIImagePickerController *),您应该在某些时候拥有,在呈现 cameraUI 之前,拥有代码 cameraUI.delegate = self; 或任何具有委托方法的控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-05
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多