【问题标题】:UIImagePicker only works with front camera on iPhone 6 plusUIImagePicker 仅适用于 iPhone 6 plus 上的前置摄像头
【发布时间】:2015-01-20 15:36:00
【问题描述】:

使用以下代码:

- (void) viewDidAppear:(BOOL)animated {

    [super viewDidAppear:animated];

    if (!self.alreadyAppeared) {

        [self performSelector:@selector(showCamera) withObject:nil afterDelay:0.3];
    }

}

-(void)showCamera
{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.showsCameraControls = YES;
    picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
    picker.delegate = self;

    [self presentViewController: picker animated:YES completion:NULL];
}

我的应用程序运行良好。但是,如果我更改

picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;

picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;

我丢失了图像。以下代码是我如何捕获图像并在我的应用程序中设置图像视图。我使用导航控制器返回应用程序:

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

    UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];
    self.cf.imageView.image = chosenImage;

    NSLog(@"%@",chosenImage);
    [picker dismissViewControllerAnimated:YES completion:NULL];

    // pop back to previous controller
    NSArray *myControllers = self.nc.viewControllers;
    int previous = (int)myControllers.count - 2;
    UIViewController *previousController = [myControllers objectAtIndex:previous];

    [self.nc popToViewController:previousController animated:YES];

}

同样,这在我的 iPad 上运行良好,使用前置摄像头也运行良好。即使使用后置摄像头,所选图像(我记录的)也显示正确。有人知道为什么后置摄像头设置会产生这样的效果吗?

另外一个项目:我收到这条非常令人恼火的信息,它有大约 1,000 种不同的解释,但都没有消除这条信息:

对尚未渲染的视图进行快照会导致快照为空。确保您的视图在快照之前或屏幕更新后的快照之前至少渲染过一次。

【问题讨论】:

    标签: ios iphone xcode uiimagepickercontroller


    【解决方案1】:

    使用 iPhone 6 和 6 plus 时,您必须防止每次离开相机控件(选择器)时重新加载视图。我的应用程序使用一个视图控制器来创建一个动态视图,它是一个表单。该表单上的每个字段都是从 Web 服务中提取的,并成为表单的子视图。这包括相机字段,我使用视图控制器和 xib 来构建该字段。表单视图通过 drawRect 方法构建整个表单。每次离开时,相机字段都会尝试调用该方法。我阻止它重新加载,这似乎已经解决了这个问题。

    更标准的应用程序可能会在主视图控制器的 viewDidAppear 方法中动态创建相机字段。如果您将主视图控制器设置为相机字段的委托,当它离开选取器时,它仍会调用 viewDidAppear。必须防止这种情况发生,否则您将失去形象。

    这里真正有趣的是,这只发生在 iPhone 6 和 6 plus 上。所有其他设备都不会尝试重新加载视图...看图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 2016-08-15
      • 1970-01-01
      • 2020-11-15
      • 2018-08-21
      相关资源
      最近更新 更多