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

liwlm1x9  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(120)

我需要帮助。
我目前正在xcode中做一个应用程序,我需要将所有视图锁定在纵向模式下,但我有第二个视图控制器,需要在横向模式下,因为我使用媒体播放器框架来显示视频,需要在横向模式下。
我一直在寻找这个,大约一个星期了,现在仍然不能解决这个问题。
我很感激你的帮助--先谢了。

t98cgbkg

t98cgbkg1#

这有两个方面:1.如何根据需要锁定每个视图控制器的方向。
但这本身并不能旋转设备。当你在纵向和下一个视图控制器显示为横向,那么它仍然会在纵向。你可以把设备转到portait和conroller将相应地旋转。一旦在横向它是固定在横向,不能再旋转。当你回到你的纵向控制器,它将在横向...
所以,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.

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

相关问题