简体   繁体   English

从UIImagePickerController摄像头视图中推送viewController

[英]Push a viewController from the UIImagePickerController camera view

I'm developing a messaging app (something like WhatsApp), users can send text and image messages to one another. 我正在开发一个消息传递应用程序(类似于WhatsApp),用户可以相互发送文本和图像消息。

when user wants to send an image, he can choose one from the camera roll or he can take one with the camera. 当用户想要发送图像时,他可以从相机胶卷中选择一个,或者他可以用相机拍摄一个。

This is how I present the UIImagePickerController for both cases: 这就是我为两种情况呈现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];
}

After the user choose/take a picture I'm pushing a SendImageViewController that shows the image in full screen and has a button to actually send the image. 在用户选择/拍照后,我正在推送一个SendImageViewController ,它以全屏显示图像,并有一个实际发送图像的按钮。

This is how I push it: 这是我推动它的方式:

- (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];
}  

When I push SendImageViewController from the camera roll everything works great. 当我从相机胶卷推送SendImageViewController ,一切都很好。 The problem is that I can't push my SendImageViewController when the image is taken from the camera, because the camera doesn't have a navigation bar (I tried to push it but my SendImageViewController view doesn't presented well) 问题是,当从相机拍摄图像时,我无法推送我的SendImageViewController ,因为相机没有导航栏(我试图推动它但我的SendImageViewController视图没有很好地呈现)

How can I deal with this? 我怎么处理这个?

* I don't want to dismiss the picker and then push the SendImageViewController , I want that the SendImageViewController will be pushed on top of the camera/camera roll, so when I tap the back button I'll back to the camera/camera roll view. *我不想解雇拾取器,然后推送SendImageViewController ,我希望SendImageViewController将被推到相机/相机胶卷的顶部,所以当我点击后退按钮时我会回到相机/相机胶卷视图。

Try showing the navigation bar like this : 尝试显示导航栏,如下所示:

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM