iPad:仅将 UIView 方向锁定为横向模式
Posted
技术标签:
【中文标题】iPad:仅将 UIView 方向锁定为横向模式【英文标题】:iPad:Lock UIView orientation into Landscape mode only 【发布时间】:2011-05-31 14:23:12 【问题描述】:此要求适用于 iPad。 我有一个 UIView,它在启动视频录制时用作相机覆盖视图。它在 UIImagePickerController 中设置如下。
[self presentModalViewController:pickerController animated:NO];
pickerController.cameraOverlayView =myOwnOverlay;
这是我的要求,即在调用摄像头进行视频录制时,我必须在 UIImagePickerController 中提供自己的叠加层。 我只想将自己的相机覆盖 UIView 锁定为横向模式,以便用户只能在横向模式下录制视频,而不是纵向模式,这也是我的项目要求。 我知道用于 UIViewController 的 shouldAutorotateToInterfaceOrientation。我使用了 "[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];" 它,当我启动此相机自己的叠加 UIView 时,它会锁定为横向模式,但是当我旋转设备时,UIView 也会旋转为纵向。我根本不想要人像模式。我试图像下面这样处理这个问题,但它不适用于 UIView。然后我看到这在 UIviewController 中是可能的,但在 UIView 中是不可能的。但是我必须有 UIView 才能进行此相机启动操作。
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
return (interfaceOrientation==UIInterfaceOrientationLandscapeRight || interfaceOrientation==UIInterfaceOrientationLandscapeLeft);
请建议我如何为我的 UIView 提供方向锁定解决方案?
谢谢!
【问题讨论】:
【参考方案1】:怀疑 APPLE 是否允许,但如果您希望 UIImagePickerController 以横向方式启动(并保持),请使用以下代码。
//Initialize picker
UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
//set Device to Landscape. This will give you a warning. I ignored it.
//warning: 'UIDevice' may not respond to '-setOrientation:'
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
//Set Notifications so that when user rotates phone, the orientation is reset to landscape.
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
//Refer to the method didRotate:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:@"UIDeviceOrientationDidChangeNotification" object:nil];
//Set the picker source as the camera
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
//Bring in the picker view
[self presentModalViewController:picker animated:YES];
方法didRotate:
- (void) didRotate:(NSNotification *)notification
//Maintain the camera in Landscape orientation
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
此代码的信用属于UIImagePickerController in Landscape
【讨论】:
但在 didRotate 方法中有时应用程序崩溃【参考方案2】:试试这个:
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
BOOL isLandscapeRight = (UIInterfaceOrientationLandscapeRight == interfaceOrientation);
return isLandscapeRight;
还必须将您的应用程序 info.plist 的界面方向设置为横向(右主页按钮)
【讨论】:
【参考方案3】:有一个简单的解决方案 在 info.plist 文件中编辑条目支持的界面方向 ipad。
【讨论】:
以上是关于iPad:仅将 UIView 方向锁定为横向模式的主要内容,如果未能解决你的问题,请参考以下文章
使用 Ionic / ngCordova 将相机/屏幕方向锁定为横向
仅在 iOS8 中,当 App 被锁定为纵向时,UIAlertView 更改为横向