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