2009-10-09 78 views
39

我有一个TabBarController,其中的一个选项卡包含一个子视图,这是一个navigationController。然后,我将导入控制器加载一个继承UITableViewController窗体的视图。UITableViewController上边距

我的问题是,由于某种原因,表视图开始对导航控制器进行轰击,而不是屏幕的顶部,但大约在导航栏下半部分,因此表视图中第一个单元格的顶部被切断。

任何人都可以建议如何将UITableViewController向下移动?

回答

-1

通过在视图上设置框架属性,可以将UITableView的框架设置为明确的X,Y位置。或者,您可以使用界面构建器更改相同的属性,具体取决于您是通过IB还是通过代码添加了tableview。

例如。

myTable.frame = CGRectMake(0.0, myTable.frame.origin.y + NAV_BAR_HEIGHT, myTable.frame.size.width, myTable.frame.size.height); 

这将定位表myTable的(这是一个指向的UITableView)导航栏下方,则还可能需要相应地调整平台的高度。我用一个常数表示的导航栏的高度是44.0。

我通常做这种类型的视图调整,如果它必须在视图控制器的viewWillAppear负责。通常情况下,您需要进行这种类型的调整,以便通过更改视图的设置方式来解决问题。

没有关于如何设置视图的更多细节,很难更具体。

98

修复它的编程方式:

- (void)viewDidLoad { 
     UIEdgeInsets inset = UIEdgeInsetsMake(20, 0, 0, 0); 
     self.tableView.contentInset = inset; 
    } 
+2

这很好,但滚动条有点搞砸了。它们在这里的导航栏下扩展。这就像我们需要改变框架,而不是仅仅为scrollview添加edgeInset。但是,重新构建不起作用 – 2013-08-02 00:43:19

+4

@ chuckp16您还可以添加'self.tableView.scrollIndicatorInsets = inset;' – dokkaebi 2013-08-10 18:26:48

+4

(64,0,0,0)对于标准UINavigationBars(无提示)最适合。 – eulr 2014-02-17 23:49:32

7

这种“藏在背后的导航栏”的问题是由于iOS的7会自动使用全屏布局。 See the iOS 7 Transition Guide

这是有点迂回,因为它显示在iOS 6中的模拟器(布局明智;即没有隐藏在后面)。

是您的导航栏半透明?我的是,并将其设置为在Iphone iOS 6,iPhone iOS 7和Simulator 7.0上使用XCode 5进行非半透明修复。(在我的情况下,我将其设置为半透明用于视觉外观。)

+0

哈!只是检查日期......这不是关于iOS 7的布局,是吗? :)嘎。那么,我想我可以把它留下来,以防这是今天第一个受到人们关注的问题,就像我一样。 – 2013-09-27 14:07:36

+0

谢谢你离开这个。它帮助了我。 – jeffreymatthias 2013-10-22 05:53:54

+0

尽管原始问题并非如此,但这是一个非常有用的答案! – erdekhayser 2014-12-23 02:58:31