2

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

在此处输入图像描述

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

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

并且简单地处理了一个 splitviewcontroller 委托方法:

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

我什么都没有,只有一些表格视图,细节方面有一些单元格。

4

1 回答 1

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: 时已设置)从屏幕高度计算。我想当你隐藏导航栏时,这些值对你来说应该是相等的。

于 2013-02-06T12:02:23.600 回答