2

我有一个小问题,定位问题,开展我在景观SPLITVIEW时,上面有我的左视图控制器一个黑色的小空间: alt text在左视图uisplitviewcontroller

我的iPad旋转为纵向和切回后景观,空间已经消失。

,如果我直接加载到的UITableViewController左视图,而不是在一个navigationcontroller,它工作正常: alt text

任何想法,为什么发生这种情况?

// Produkte 
    self.produkteMainTableVC = [[produkteMainTableViewController alloc] initWithStyle:UITableViewStylePlain]; 
    UINavigationController *produkteMainNavigationController = [[UINavigationController alloc] initWithRootViewController:self.produkteMainTableVC]; 
    self.produkteDetailVC = [[produkteDetailViewController alloc] initWithNibName:@"produkteDetailViewController" bundle:nil]; 
    self.produkteSplitVC = [[UISplitViewController alloc] init]; 

    self.produkteSplitVC.delegate = self.produkteDetailVC; 
    self.produkteMainTableVC.produkteDetailVC = produkteDetailVC; 
    [self.produkteSplitVC setViewControllers:[NSArray arrayWithObjects:produkteMainNavigationController,self.produkteDetailVC,nil]]; 

感谢您的帮助!

编辑: 它正好20像状态栏。这有助于任何人吗?

EDIT2:

做这样的事情:

if(self.navigationController.navigationBar.frame.origin.y >= 20.0) { 

     self.navigationController.navigationBar.frame = CGRectMake(self.navigationController.navigationBar.frame.origin.x, 0.0, self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height); 
    } 

结果: alt text

有点起色,我会说。但我不知道如何将我的tableview粘贴在导航栏下方。

+0

你有没有最终的解决方案? – TomSwift 2011-04-12 03:54:35

+0

没有。决定使用不带tabbar的分割视图,并修改了我的导航概念 – choise 2011-04-12 10:29:54

+0

我想出了一种实现此目的的方法;看到我的答案,下面。技巧是不使用标准的UITabViewController,而是创建自己的。因为UITabViewController相当简单,所以很容易。 – TomSwift 2011-04-12 16:48:44

回答

0

UINavigationController有一个讨厌的习惯,把它的内容向下移动20px,具体取决于你放置它的位置。我猜它是在这里做的,因为你的分割视图控制器是在一个TabBar控制器内,而Apple没有祝福这种类型的安排。

+0

但它的工作;)你认为苹果会批准这个?不知道有没有这样的应用。你有一个想法如何避免这种特殊的行为? – choise 2010-12-14 15:37:14

+0

如果你能弄清楚如何克服20px的问题,它可能会被批准。虽然我试图在不同的情况下这样做,但放弃了。 – Brian 2010-12-14 15:47:59

+0

你能检查我的第二个编辑吗?可能你有一个想法。 – choise 2010-12-14 16:45:53

0

我遇到了同样的问题,没有解决。我注意到的唯一的事情是,当主设备不包含UINavigationController作为它的根时,这不会发生。

任何人都可以解决这个问题吗?

0

这是我做的,它似乎工作正常。

我创建了自己的自定义选项卡视图控制器,源自UIViewController。在viewDidLoad我添加一个UITabBar到视图的底部并将代理设置为我自己,以便我可以处理选项卡更改。 (我将UITabBar作为rotatingFooterView返回)选项卡更改导致交换当前视图控制器,就像真正的UITabBarController一样。当交换视图控制器(有时是UISplitViewController,在主视图中托管UINavigationController)时,我在视图内添加并定位了视图控制器的视图,位于UITabBar之上。我还小心地将viewWill/DidAppear/Disappear调用转发给当前的视图控制器,以及每个will/didRotate消息。

+1

你有没有类似于我们分享的示例项目? – choise 2011-04-12 19:22:11

3

我知道这是一个很古老的话题,但也许它会帮助其他人...

我有同样的问题(有相同的配置:SPLITVIEW中的TabBar)。 该属性解决了它!

[self.splitViewController setWantsFullScreenLayout:YES]; 
+0

感谢您的评论。当然,它可能会帮助一些人! – choise 2012-12-20 14:31:29

+0

@Funyafunya我就像在这个问题上发疯一样,我差点撞墙。但是,你迟到的评论肯定在这一刻保存了我的权利。从现在开始,即使太晚,我也会始终发布我的正确的已知解决方案/体验:)感谢哥们。 – Humayun 2013-01-14 19:22:38

+0

向SO问题添加内容永远不会太晚。你不只是回答OP的问题,你正在回答数百名未来遇到此线程的其他开发人员的问题。那谢谢啦! – Dermot 2013-12-01 01:32:26

0

似乎是从iOS 7.0发生此问题。在某些情况下设置UINavigationBar的帧不起作用。我认为这是可以解决你的问题:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) { 
     self.navigationController.view.frame = CGRectMake(0, -20, self.navigationController.view.frame.size.width, 
                  self.navigationController.view.frame.size.height); 
    } 

此代码应(在- (void)viewDidLoad例如)只能调用一次。 在我的情况下,它适用于所有设备方向。

相关问题