我需要一些帮助。
我目前正在xcode中执行一个应用程序,我需要在纵向模式下锁定所有视图,但我有第二个视图控制器需要进入横向,因为我正在使用mediaplayer框架来显示视频需要在风景中。
我一直在寻找这个,大约一个星期了,仍然无法解决问题。
我很感激提前帮助。
答案 0 :(得分:2)
这有两个方面。 1.如何按需要锁定每个视图控制器的方向。
但仅此一项不会旋转设备。当您处于纵向状态并且要显示的下一个视图控制器用于横向时,它仍将以纵向显示。您可以将设备转为移动设备,然后控制器将相应地旋转。一旦进入景观,它就会固定在风景中,不能再旋转。 当你回到你的肖像控制器时,它会以风景呈现......
所以,2。你需要旋转设备。
Pont 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.
如果你正在使用模态视图控制器,那么它当然有点简单。