Objective c iOS8中的摄影机旋转和覆盖视图

Objective c iOS8中的摄影机旋转和覆盖视图,objective-c,camera,uiimagepickercontroller,ios8,cameraoverlayview,Objective C,Camera,Uiimagepickercontroller,Ios8,Cameraoverlayview,我在iOS 8中使用iPad摄像头时遇到问题。在测试期间,我看到了一些老问题和新问题,但仍然没有找到解决方案 这个问题似乎有两个部分 1) 当设备方向旋转时,相机本身也会旋转(如世界在其一侧) 2) 在“横向”中打开相机时,叠加不会显示。用肖像画打开就可以了 它是一个使用iOS7作为基本SDK的应用程序,只有在已升级到iOS8的设备上运行该应用程序时才会出现问题。该应用程序没有使用故事板,而是使用NIB 我希望在升级到特定于iOS8的补丁并在下一个版本中将其用作基本SDK之前,先用Xcode 5

我在iOS 8中使用iPad摄像头时遇到问题。在测试期间,我看到了一些老问题和新问题,但仍然没有找到解决方案

这个问题似乎有两个部分

1) 当设备方向旋转时,相机本身也会旋转(如世界在其一侧)

2) 在“横向”中打开相机时,叠加不会显示。用肖像画打开就可以了

它是一个使用iOS7作为基本SDK的应用程序,只有在已升级到iOS8的设备上运行该应用程序时才会出现问题。该应用程序没有使用故事板,而是使用NIB

我希望在升级到特定于iOS8的补丁并在下一个版本中将其用作基本SDK之前,先用Xcode 5.1.1对此进行修复

这是我打开相机的代码:

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] == YES) {

    // Create Camera

    imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.sourceType =  UIImagePickerControllerSourceTypeCamera;
    imagePicker.delegate = self;
    imagePicker.showsCameraControls = NO;

    // Set up custom controls view

    [[NSBundle mainBundle] loadNibNamed:@"OverlayView" owner:self options:nil];
    self.overlayView.frame = imagePicker.cameraOverlayView.frame;
    imagePicker.cameraOverlayView = self.overlayView;
    self.overlayView = nil;

    // Show Camera

    [self presentViewController:imagePicker animated:NO completion:nil];

    [imagePicker release];

}
我也试过了

以及覆盖视图的工具栏(位于底部)的布局:

如果我把它改成坐在“顶端”,它会出现在肖像和风景中!因此,它一定与视图/窗口/大小有关,尽管奇怪的是,当布局保持不变时,它的行为会发生怎样的变化

我尝试了
showsCameraControls=YES
和散列出
OverlayView
块,但问题1仍然存在,因此与应用程序的覆盖无关

我希望有人能找到答案,这似乎是一个相当普遍的问题

如果你需要任何进一步的细节,请告诉我

编辑1:修复覆盖(问题2) 它没有将方向应用于覆盖视图,修复方式如下:

// Grab the window frame and adjust it for orientation - from http://stackoverflow.com/a/15707997/520902

UIView *rootView = [[[UIApplication sharedApplication] keyWindow]
                        rootViewController].view;
CGRect originalFrame = [[UIScreen mainScreen] bounds];
CGRect screenFrame = [rootView convertRect:originalFrame fromView:nil];
...
self.overlayView.frame = imagePicker.cameraOverlayView.frame;
我怀疑这与相机没有意识到它的方向有关,它会继续寻找问题1的解决方案

编辑2:问题1的更新 看起来相机旋转可能是苹果公司的问题。在iOS8上,如果打开联系人应用程序,编辑联系人并选择“拍照”,则会出现完全相同的问题-在默认的苹果应用程序中


我仍然找不到修复程序,所以我现在只是在每次方向改变时销毁并重新创建
图像采集器
,它很难看,但在苹果发布修复程序或更好的解决方案之前就足够了。

苹果在iOS 8.1中修复了这个问题

我也面临同样的问题。请帮助HI如何在每次旋转时销毁和重新创建图像选择器?你是否关闭它,打开它,然后每次都是纵向模式?嗨@Lennie,随着编辑的改变#1在纵向或横向模式下打开相机,覆盖显示正确,只是实际旋转被破坏了。在
UIDeviceOrientationIDChangeNotification的触发器中,只需关闭并打开摄像头。这将在当前方向打开它(而不是将其旋转到新方向),并加载覆盖层。即使在iOS 8中也没有使用ARC?天啊。