在IOS 6.1中更改方向时,SplitViewController的主方有时无法正确呈现

时间:2013-02-06 11:11:03

标签: ios objective-c ipad storyboard uisplitviewcontroller

我有一个标签栏控制器,它有一些tabitems。一些tabitems是splitviewcontrollers。有时,当我改变方向时,splitview控制器的左侧无法正确渲染,底部有一个黑色方块。通过再次改变方向,问题就解决了。

enter image description here

我的代码没什么特别之处。在viewdidload中我有:

[self.navigationController setNavigationBarHidden:YES];
self.splitViewController.delegate = self;

一个splitviewcontroller委托方法处理简单:

- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:   (UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{
return NO;
}

我没有更多内容,只是一些桌面视图,细节方面有一些单元格。

1 个答案:

答案 0 :(得分:1)

我见过这样的问题,我想出的唯一解决方法是重置左侧视图控制器视图的大小以及它的导航控制器视图:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    if (self.splitViewController) {
        viewHeight = ...
        navViewHeight = ...
        CGRect viewFrame = CGRectMake(0, 0, 320, viewHeight);
        self.view.frame = viewFrame;

        CGRect navControllerViewFrame = CGRectMake(0, 0, 320, navViewHeight);
        self.navigationController.view.frame = navControllerViewFrame;
    }
}

在viewHeight和navViewHeight中,您可以根据当前方向(在调用didRotateFromInterfaceOrientation:时已设置)从屏幕高度计算。我猜你隐藏导航栏时这些值应该相等。