【问题标题】:iOS 7 UIImagePickerController Camera Covered with Static imageiOS 7 UIImagePickerController 相机覆盖静态图像
【发布时间】:2013-09-30 15:32:57
【问题描述】:

iOS 7 使用 UIImagePickerController 拍照两次,第二次会显示静态图像覆盖相机,如何重置相机。

我正在尝试一张一张地拍照,继续拍5张。

它适用于 iOS6。

在iOS7上,第一次可以正常使用,但是第二次拍照时,屏幕上会显示一个静态的暗图像,如何清除或重置它,虽然拍照可以,但用户看不到相机会捕捉到什么。

bool fistTimeToShow = YES;

-(void) viewDidAppear:(BOOL)animated{
    if (fistTimeToShow) {
        fistTimeToShow = NO;

        self.imagePickerController = nil;

        [self tackImage];
    }
}

-(void)tackImage{
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

        self.imagePickerController = [[UIImagePickerController alloc]init];
        self.imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
        self.imagePickerController.showsCameraControls = YES;
        self.imagePickerController.delegate = self;

        [self presentViewController:self.imagePickerController animated:NO completion:nil];
    }
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    NSLog(@"====== imagePickerController:didFinishPickingMediaWithInfo ======");
    [self.imagePickerController dismissViewControllerAnimated:NO completion:nil];

    //...deal with the image capture...

    self.imagePickerController = nil;

    [self tackImage];
}

更新

我更改了解除函数以将[self tackImage]; 放入块中。现在它总是显示拍摄的第一张照片。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
    NSLog(@"====== imagePicker: didFinish ======");

    self.imagePickerController = nil;

    [self dismissViewControllerAnimated:NO completion: ^{
        [self tackImage];
    }];
}

我正在尝试寻找清除图像的方法。但我还不知道图片保存在哪里。

更新2

使用

[self performSelector:@selector(presentCameraView) withObject:nil afterDelay:1.0f];

和功能

-(void)presentCameraView{
    [self presentViewController:self.imagePickerController animated:NO completion:nil];
}

替换。 [self presentViewController:self.imagePickerController animated:NO completion:nil]; 无论如何它都可以在我的设备上运行,但我什至不知道为什么。

更新3

Delay:1.0f 时我已将userInteractionEnabled 设置为NO 以避免其他问题,可能还需要设置navigationBartabBar 以供具体使用。

【问题讨论】:

  • 黑色相机问题很常见,我也有一个问题..如果你得出结论,请告诉我,我会这样做stackoverflow.com/questions/19081701/…
  • @Heavy_Bullets 是的,我向苹果发送了错误报告,等待反馈。任何结果都会让您知道。
  • 我也做过,但他们要求我提供一个示例项目...我无法重现该问题(如果可以,那将不是问题),如果有人有示例,让我知道
  • @Heavy_Bullets,我创建了一个简单的演示应用程序,它可以重现我的问题,并附加到错误报告中。我只是用一个开发配置文件构建它,不确定它是否正确。正在等待苹果的回应。

标签: iphone ios uiimagepickercontroller ios7


【解决方案1】:

我在 iOS 7 下使用 Xamarin.iOS 时遇到了完全相同的问题。

有什么帮助是在didFinishPickingMediaWithInfo 方法中添加GC.Collect()。 在 C# GC.Collect() 中“清理”未使用/已处置对象的内存。

当然,在 Obj-C 中没有直接的等价物,但这也可能对您的问题有所帮助(它可能与内存有关)。

【讨论】:

  • 谢谢,我认为这是一种与内存有关的问题,并且看起来图像没有快速清理,但无论如何。我记得有人自己制作了图像选择器控制器,并且它可以工作,所以我认为问题出在苹果的图像选择器控制器上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2014-11-13
  • 2019-05-31
  • 2013-09-22
  • 1970-01-01
  • 2013-09-26
  • 2014-04-13
相关资源
最近更新 更多