从 UIImagePickerController 相机视图推送一个 viewController

Posted

技术标签:

【中文标题】从 UIImagePickerController 相机视图推送一个 viewController【英文标题】:Push a viewController from the UIImagePickerController camera view 【发布时间】:2012-07-22 15:26:20 【问题描述】:

我正在开发一种消息应用程序(类似于 WhatsApp),用户可以相互发送文本和图像消息。

当用户想要发送图像时,他可以从相机胶卷中选择一张,也可以用相机拍摄一张。

这就是我在这两种情况下呈现UIImagePickerController 的方式:

- (void)handleTakePhoto

    UIImagePickerController *ipc = [[UIImagePickerController alloc] init];

    ipc.delegate = self;
    ipc.sourceType = UIImagePickerControllerSourceTypeCamera;

    [self presentModalViewController:ipc animated:YES];
    [ipc release];


- (void)handleChooseFromLibrary

    UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
    ipc.delegate = self;
    ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    NSString *desired = (NSString *)kUTTypeImage;
    if ([[UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary] containsObject:desired]) 
        ipc.mediaTypes = [NSArray arrayWithObject:desired];
    

    [self presentModalViewController:ipc animated:YES];
    [ipc release];

在用户选择/拍照后,我正在推送一个SendImageViewController,它会全屏显示图像并有一个按钮来实际发送图像。

我是这样推的:

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

    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];


    SendImageViewController *sivc = [[SendImageViewController alloc] initWithImage:image
                                                                          delegate:self];
    [picker pushViewController:sivc animated:YES];
    [sivc release];
  

当我从相机胶卷中按下SendImageViewController 时,一切正常。 问题是从相机拍摄图像时我无法推送我的SendImageViewController,因为相机没有导航栏(我尝试推送它,但我的SendImageViewController 视图呈现不佳)

我该如何处理?

* 我不想关闭选择器然后推送SendImageViewController,我希望SendImageViewController 会被推送到相机/相机胶卷的顶部,所以当我点击返回按钮,我将返回相机/相机胶卷视图。

【问题讨论】:

【参考方案1】:

尝试像这样显示导航栏:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide];

[picker setNavigationBarHidden:NO animated:YES];
[picker pushViewController:vc animated:YES];

【讨论】:

这正是我想要的,非常感谢 :) 也许你可以检查我的另一个问题是“从选择器中获取图像后,如何在 UIImageView 中正确显示它? "这里 -***.com/questions/11560711/… 照片库没有问题,但我被相机视图卡住了。实际上,唯一能发挥作用的行是 [picker setNavigationBarHidden:NO animated:YES]; 你救了我的命!谢谢

以上是关于从 UIImagePickerController 相机视图推送一个 viewController的主要内容,如果未能解决你的问题,请参考以下文章

从 UITabBarController 驱动 UIImagePickerController

从 UIImagePickerController 保存视频

UIImagePickerController 从 UICollectionViewCell 内的 UIImageView 呈现

如何从 UIImagePickerController 获取图像文件名

从 UIImagePickerController 获取图像位置

从 UIImagePickerController 传递图像数据以进行后台处理