【发布时间】: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