Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 6.1中的自动旋转功能,用于自定义相机视图_Ios_Objective C_Ipad_Camera_Ios6.1 - Fatal编程技术网

iOS 6.1中的自动旋转功能,用于自定义相机视图

iOS 6.1中的自动旋转功能,用于自定义相机视图,ios,objective-c,ipad,camera,ios6.1,Ios,Objective C,Ipad,Camera,Ios6.1,我已经阅读了几乎所有关于我的问题的帖子,但似乎没有一个解决方案对我的应用程序有效 所以,我使用一个自定义的摄影机视图(工具栏上有按钮和一个覆盖),它是从视图控制器以模式显示的。我的应用程序只支持方向的左右横向。我想阻止相机视图在显示时自动旋转。我已经将自动旋转所需的所有方法放在我的视图控制器和应用程序委托上。我也检查了我的plist文件,支持的旋转是正确的。但当我旋转设备时,我的相机视图会一直旋转到任何旋转(纵向和横向),导致覆盖和工具栏的位置不正确。我也无法检查摄影机视图的方向,因为我尝试将N

我已经阅读了几乎所有关于我的问题的帖子,但似乎没有一个解决方案对我的应用程序有效

所以,我使用一个自定义的摄影机视图(工具栏上有按钮和一个覆盖),它是从视图控制器以模式显示的。我的应用程序只支持方向的左右横向。我想阻止相机视图在显示时自动旋转。我已经将自动旋转所需的所有方法放在我的视图控制器和应用程序委托上。我也检查了我的plist文件,支持的旋转是正确的。但当我旋转设备时,我的相机视图会一直旋转到任何旋转(纵向和横向),导致覆盖和工具栏的位置不正确。我也无法检查摄影机视图的方向,因为我尝试将NSLog放在shouldAutoRotate方法上,但根本没有调用它

那么,如何检查自定义摄影机视图上的旋转?我怎样才能强迫它不旋转,保持静止呢

如果需要我的代码,我会在这里发布。如果有人能在这方面帮助我,我将非常感激,因为这让我现在非常沮丧


多谢各位。干杯

为UINavigationController创建一个类别

@interface UINavigationController(autoRotation)

-(BOOL)shouldAutoRotate;

@end

@implementation UINavigationController

-(BOOL)shouldAutoRotate{

  return [[self.viewControllers lastobject] shouldAutoRoatate];

}

-(NSUInteger)supportedInterfaceOrientations {

  return [[self.viewControllers lastobject] supportedInterfaceOrientations];

}

@end
在相应的视图控制器中实现这两种方法 并返回您想要的方向….

创建一个新的“UIImagePickerController”类,并在.m文件中实现给定的旋转代理

// For lower iOS versions
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation  {

return ((toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) || ((toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)));
}

// For iOS version 6.0 and above
- (BOOL)shouldAutorotate {

return YES;
}


- (NSUInteger)supportedInterfaceOrientations {

return (UIInterfaceOrientationMaskLandscape);
}

并以MyImagePickerController而不是UIImagePickerController为例,展示它。这将起作用:)

xcode->file->new file在左侧窗格中选择cocotouch,然后选择objective-c category->next 在UIImagePickerController下拉列表中选择给定名称Picker类别

进口 @接口UIImagePickerController(选择器)

-(BOOL)应该自动旋转; -(整数)支持接口方向

@结束

导入“UIImagePickerController+picker.h” @实现UIImagePickerController(picker)

-(BOOL)应该自动旋转{

    return yourOrientation;
   if([self presentingViewController])// Camera is present 
         return [instanceOfUIImagePickerController shouldAutoRotate];
   return yourOrientaionNeededForThisVC;
}

-(整数)支持的接口方向{

    return yourInteger;
}

@结束

在此之后,当您的设备的方向发生更改时,此时应从您的UINavigationController类别调用方法shouldAutoRotate。您必须确定是否显示了cameraview。如果是,则必须调用选择器的shouldAutoRotate

请参阅下面的代码

在视图中,控制器的应自动旋转

-(BOOL)应该自动旋转{

    return yourOrientation;
   if([self presentingViewController])// Camera is present 
         return [instanceOfUIImagePickerController shouldAutoRotate];
   return yourOrientaionNeededForThisVC;

}

你的项目有导航控制器吗?是的,我使用导航控制器。凯,我认为目前我唯一能做的是用iPad上的按钮锁定自动旋转。你的iOS目标版本是什么?也许你需要更多的控制。尝试苹果的AVCam示例:谢谢您的回答。但我也尝试过这种方法。没有给我想要的结果。但也许我错过了什么。所以,也许我会尝试用这种方法做更多的修补。你怎么带你的相机?使用presentModalViewController?如果是,则导航堆栈中不存在UIImagePickerViewController。因此,您必须为IMagePickerViewController创建一个类别,并调用shouldAutoRotae…是的,我使用的是presentModalViewController。你能给我创建类别的示例代码吗?我一定会尝试一下,因为这似乎是一种方式。谢谢你的回答。我正在尝试这个方法,如果有效,我会告诉你:)老兄,非常感谢。它工作得很好。已接受您的答案。:)