2012-04-29 46 views
0

我有三个viewcontrollers都在导航堆栈中。第一个视图控制器不使用uitoolbar,第二个视图控制器不使用,第三个视图控制器不使用uitoolbar。隐藏uitoolbar在顶部留下空隙

问题是,当我从第二个UIViewController转到第三个UITableViewController时,如果我隐藏工具栏,屏幕顶部会出现一个白色的间隙。

这里有一个画面:

gap at top

我现在有[self.navigationController setToolbarHidden:YES animated:YES]; 在第二视图控制器的viewWillDisappear,但我也把它放在第三视图控制器viewWillAppear中的方法。两者都导致差距出现。

我该如何解决这个问题?

+0

你什么时候隐藏工具栏?推之前或之后,以及在哪种方法? – CodaFi

+0

我更新了问题以回答您的问题。 – ladookie

回答

0

首先,我建议使用setToolbarHidden:YES animated:NO让新的UIViewController在没有工具栏的情况下出现。我认为你的方法会在最初显示,然后消失,对吧?如果使用animated:NO(或者使用方法签名而不使用animated:),则当第三个UIViewController被推入屏幕时,新的UIViewController应该“推”掉第二个UIViewController的UIToolbar。其次,您可能需要在界面构建器中查看您的UIViewController视图的冲击和支撑。这几乎肯定是造成这种差距的原因。您可能希望拥有固定的顶部和底部边距以及灵活的高度。

+0

表视图的支柱连接到屏幕的顶部,底部,左侧和右侧。 – ladookie

+0

你有灵活的身高吗?也就是说,上下双点箭头是否被点击? – mbm29414

+0

是的。这是一个UITableViewController,它不会让我改变这一点。 – ladookie

0

我会回答我自己的问题,但我不会接受它,因为它是hacky。

我能够通过在viewDidLoad中的开头添加这行代码进行修复:

[self.tableView setFrame: CGRectMake(0, 0, 320, 493)]; 

基本上,我设置的tableview框架的高度为比一个完整的屏幕的尺寸更大的13个像素(这是320×480)。

+0

虽然这可能会在短期内发挥作用,但请相信我,您最好精打细算,因为您可能需要为不同的应用程序在风景,iPad等方面使用相同的功能。 – mbm29414