Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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 Xcode-使用XIB锁定纵向中除一个视图外的所有视图_Ios_Objective C_Xcode_Landscape Portrait - Fatal编程技术网

Ios Xcode-使用XIB锁定纵向中除一个视图外的所有视图

Ios Xcode-使用XIB锁定纵向中除一个视图外的所有视图,ios,objective-c,xcode,landscape-portrait,Ios,Objective C,Xcode,Landscape Portrait,我需要一些帮助 我目前正在用xcode做一个应用程序,我需要在纵向模式下锁定所有视图,但我有第二个视图控制器,它需要进入横向模式,因为我使用mediaplayer框架来显示视频,并且需要处于横向模式 我一直在寻找这个,大约一个星期了,仍然不能解决这个问题 我非常感谢您的帮助,提前表示感谢。这有两个方面。 1.如何根据需要锁定每个视图控制器的方向 但这本身并不能使设备旋转。当您在纵向视图中并且下一个要显示的视图控制器用于横向视图时,它仍将在纵向视图中显示。您可以将设备旋转到portait(便携式)

我需要一些帮助

我目前正在用xcode做一个应用程序,我需要在纵向模式下锁定所有视图,但我有第二个视图控制器,它需要进入横向模式,因为我使用mediaplayer框架来显示视频,并且需要处于横向模式

我一直在寻找这个,大约一个星期了,仍然不能解决这个问题

我非常感谢您的帮助,提前表示感谢。

这有两个方面。 1.如何根据需要锁定每个视图控制器的方向

但这本身并不能使设备旋转。当您在纵向视图中并且下一个要显示的视图控制器用于横向视图时,它仍将在纵向视图中显示。您可以将设备旋转到portait(便携式)位置,滚轮也会相应旋转。一旦进入景观,它就固定在景观中,不能再旋转。 当你回到你的肖像控制器,它会出现在风景中

因此,2。您需要旋转设备

桥1很容易。

在所有修复纵向的控制器中实现此功能:

- (BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}
并为景观控制器执行此操作:

- (BOOL)shouldAutorotate
{
    return YES;
}


- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskLandscape;
}
2。在下一步中,您需要应用技巧。 无法通过编程方式转动设备。实现这一目标的唯一方法是旋转状态栏。之后,下一个模态(!)视图控制器将以新方向显示。这不适用于在导航堆栈上推送控制器。 诀窍是以模式呈现任何(空)视图控制器,并立即将其移除。现在,设备已打开,您可以将视图控制器推送到堆栈中。 这是我前几天使用的代码:

// Fetch the status bar from the app and set its orientation as required. 
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:YES];

// Create an empty view controller, present it modally and remove it directly afterwards
UIViewController *mVC = [[UIViewController alloc] init];
[self presentModalViewController:mVC animated:NO];
[self dismissModalViewControllerAnimated:NO];
// Now the device is rotated to the desired orientation. Go from there.

如果您使用的是模态视图控制器,那么当然会简单一些

似乎对我不起作用。所以在我的项目设置中,我允许旋转:纵向,横向左,横向右。我已经在我的viewController中输入了横向视图的代码,然后我使用了您提供给我的代码,然后我推送到下一个应在横向视图中的视图控制器。一旦我被按下,然后我手动旋转视图,它将保持不变,但一旦我将其旋转回纵向,它将与我一起旋转。现在我不确定,但我认为问题可能是我的rootViewController是一个tabbar,代码没有运行,对吗?再次感谢。谢谢。我用你的答案解决了这个问题。在我的appdelegate中,我将rootviewcontroller设置为TabBarController,并将其更改为[self.window addSubview:tabController.view];这对我很有效。啊,这是一个很好的观点。我感到羞耻,我自己也遇到了同样的问题。使用选项卡栏时,将调用选项卡栏控制器的
supportedInterfaceOrientation
。这意味着您应该对选项卡栏控制器进行子类化,并使用一些mechansim(应用程序中的Varialbe委托或一些singleton,或以某种方式使选项卡栏控制器可以从每个视图控制器访问),使选项卡栏控制器能够相应地响应—具体取决于当前显示的视图控制器(或即将显示)。是的,我刚刚制作了一个自定义Tabbar控制器,并将其导入到使用tab栏的每个视图中。但是,如果没有您的代码,我也无法使其正常工作。谢谢。