0

我正在使用具有三个屏幕的应用程序。

首先是主屏幕。从带有按钮的主屏幕,用户导航到第二个屏幕,我有一个相机覆盖,只有一个按钮可以拍照。

当用户拍照时,他可以按下导航到最后一个屏幕的按钮。但是,当他从最后一个屏幕导航到主屏幕,然后转到覆盖的第二个屏幕时,相机就关闭了。按钮显示他可以拍照,但他无法通过相机看到。

我在主屏幕上使用以下代码来启动覆盖:

if (self.imageView.isAnimating)
    self.imageView.stopAnimating;

if ([UIImagePickerController isSourceTypeAvailable:sourceType])
{
    [self.overlayViewController setupImagePicker:sourceType];
    [self presentModalViewController:self.overlayViewController.imagePickerController animated:YES];
}

overlayviewcontroller第二个屏幕在哪里overlayviewcontroller,代码如下:

- (void)setupImagePicker:(UIImagePickerControllerSourceType)sourceType
{
    self.imagePickerController.sourceType = sourceType;

    if (sourceType == UIImagePickerControllerSourceTypeCamera)
    {
        self.imagePickerController.showsCameraControls = NO;

        if ([[self.imagePickerController.cameraOverlayView subviews] count] == 0)
        {
            CGRect overlayViewFrame = self.imagePickerController.cameraOverlayView.frame;
            CGRect newFrame = CGRectMake(0.0,
                                         CGRectGetHeight(overlayViewFrame) - self.view.frame.size.height - 10.0,
                                         CGRectGetWidth(overlayViewFrame),
                                         self.view.frame.size.height + 10.0);
            self.view.frame = newFrame;
            [self.imagePickerController.cameraOverlayView addSubview:self.view];
        }
    }
}

我将不胜感激任何帮助。

4

1 回答 1

0

我也面临同样的问题,我找到了一个解决方案。

我的解决方案如下

[self performSelector:@selector(setCameraOverlayView) withObject:Nil afterDelay:2];

而不是直接放入下面的行

[self.imagePickerController.cameraOverlayView addSubview:self.view];

inoverlayViewController的上述方法

并将该行放在选择器方法setCameraOverlayView中。

就像下面

-(void)setCameraOverlayView
{
    [imagePickerController.cameraOverlayView addSubview:self.view];
}

这将解决您的问题

快乐编码:)

编辑

要初始化覆盖,我使用下面的代码,并且覆盖中的 init 函数也被修改

初始化覆盖

self.overlayViewController = [[OverlayViewController alloc] initWithNibName:@"OverlayViewController" bundle:nil images:self.finalData];

overlay中的init函数

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil images:(NSArray *)imgArray
{
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]))
    {
        subCategories = imgArray;
        imagePickerController = [[UIImagePickerController alloc] init];
        imagePickerController.delegate = self;
        imagePickerController.navigationBarHidden = YES;
    }
    return self;
}

该数组不是必需的或不需要的,它是一些额外的信息,我需要使用覆盖做更多的事情,你可以省略它。

快乐编码:)

于 2012-07-26T11:41:09.710 回答