导航后相机覆盖保持关闭状态

时间:2012-07-26 11:27:09

标签: objective-c ios

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

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

当用户拍照时,他可以按下导航到最后一个屏幕的按钮。但是当他从最后一个屏幕导航到家中然后进入覆盖秒屏幕时,摄像机将关闭。按钮出现,他可以拍照,但他无法通过相机看到。

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

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

我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我得到了一个解决方案。

我的解决方案如下

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

而不是直接放在下面的行

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

overlayViewController上面的方法

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

就像下面的

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

这将解决您的问题

快乐编码:)

修改

要初始化叠加层,我使用下面的代码,叠加层中的init函数也被修改

初始化叠加层

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

叠加层中的初始化功能

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

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

快乐编码:)