我有一个UIView(A),它以肖像模式显示,并附有一个UIButton。当用户单击该按钮时,第二个UIView(B)被初始化并在UIView A上显示为模态视图。
默认情况下,是否可以将第二个模态UIView配置为以横向模式而不是纵向模式显示?此旋转应以编程方式独立于iPhone / iPad设备的任何实际旋转。
我尝试在分配和显示第二个UIView的方法中使用setStatusBarOrientation更改方向,但这不起作用:
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES];
下面是打开模态视图的方法:
- (void) showModalView
{
// get screen dimensions
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;
// init elements
UIViewController *overlayVc = [[UIViewController alloc] init];
UIView *overlayView = [[UIView alloc] initWithFrame:CGRectMake(0,0, screenWidth, screenHeight)];
UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:overlayView.bounds];
// set status bar orientation
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES];
// add overlay to view
[overlayView addSubview:bgImgView];
[overlayVc setView:overlayView];
// show modal vc
[self presentViewController:overlayVc animated:YES completion:nil];
}
这就是我的意思:
非常感谢您提前
答案 0 :(得分:1)
是。首先,您需要告诉您的应用,您支持横向模式。您可以在项目文件中,在应用目标的常规选项卡下执行此操作。
然后在视图控制器中,您需要实现“配置视图旋转设置”部分下的方法。具体来说,这将是:
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationLandscapeRight
}
- (BOOL)shouldAutorotate
{
return YES;
}
注意我们返回掩码的supportsInterfaceOrientations函数。
当您以模态方式呈现时,您的视图应自动旋转。您可能还需要在先前的视图控制器中实现相同的方法,以便在返回时知道如何定位自己。