ios splitviewcontroller 景观失败

Posted

技术标签:

【中文标题】ios splitviewcontroller 景观失败【英文标题】:ios splitviewcontroller landscape fail 【发布时间】:2012-10-17 08:20:46 【问题描述】:

我有 spliteview 项目并强制它处于横向模式。 在我将我的 ios SDK 升级到 iOS6 之前它工作正常。 但是升级后,当我使用 iOS 5.1 Simulator 运行时,它总是以纵向模式显示,并且主视图消失了。

这是我的代码:

- (void)viewDidLoad

    [super viewDidLoad];

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

    MasterViewController *masterViewController = [[[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil] autorelease];
    UINavigationController *masterNavigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease];

    CustomverDetailViewController *custView = [[[CustomverDetailViewController alloc] initWithNibName:@"CustomverDetailViewController" bundle:nil] autorelease];

    self.splitViewController = [[[UISplitViewController alloc] init] autorelease];
    self.splitViewController.viewControllers = @[masterNavigationController, custView];


    self.window.rootViewController = self.splitViewController;

    [self.window makeKeyAndVisible];

有什么想法吗?

我尝试为不同版本提供不同的代码,在 iOS6 中似乎还可以,但在 iOS5.1 中,当我进入此视图时仍然会改变方向,我想当我分配一个新的 UIWindow 时,它的原始方向是纵向的。

在这里我更改了我的代码:

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

left = [[[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil] autorelease];
UINavigationController *masterNavigationController = [[[UINavigationController alloc] initWithRootViewController:left] autorelease];


right = [[CustomverDetailViewController alloc] initWithNibName:@"CustomverDetailViewController" bundle:nil];


self.splitViewController = [[[UISplitViewController alloc] init] autorelease];
self.splitViewController.viewControllers = @[masterNavigationController, right];


if (([[[UIDevice currentDevice] systemVersion] floatValue ] < 6.0 )) 


    self.splitViewController.delegate = left;
    [self.splitViewController.view setFrame:CGRectMake(0, 0, 1024.0f, 768.0f)];

    self.window.rootViewController = self.splitViewController;
     [self.window makeKeyAndVisible];


else
    self.window.rootViewController = self.splitViewController;
    [self.window makeKeyAndVisible];


[right release];

【问题讨论】:

【参考方案1】:

尝试在iOS 6中添加新的委托方法

- (NSUInteger)supportedInterfaceOrientations 
    return UIInterfaceOrientationMaskLandscape;


- (void)shouldAutorotate 
    return NO;

【讨论】:

以上是关于ios splitviewcontroller 景观失败的主要内容,如果未能解决你的问题,请参考以下文章

UISlider 详细信息 iOS 5.1 中 Splitviewcontroller 的视图损坏

ios splitviewcontroller 景观失败

ContainerView中嵌入的iOS7 SplitviewController不旋转

splitviewcontroller 的详细视图的帧大小在 ios4.2 中没有改变

iOS splitViewcontroller 的不同自定义视图控制器

IOS 8 SplitViewController iPhone模拟器人像detailView后退按钮问题