UITableViewController的上边距

时间:2009-10-09 13:45:22

标签: iphone cocoa-touch iphone-sdk-3.0

我有一个TabBarController,其中一个标签包含一个子视图,它是一个navigationController。然后我在导航控制器中加载一个继承UITableViewController形式的视图。

我的问题是由于某种原因,桌面视图开始晃动导航控制器,而不是屏幕的顶部,但大约是导航栏的一半,因此表格视图中第一个单元格的顶部被切断。 / p>

有人可以建议如何移动UITableViewController吗?

3 个答案:

答案 0 :(得分:98)

以编程方式修复:

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

答案 1 :(得分:7)

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

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

导航栏是否半透明?我是,并设置为非半透明的修复它在Iphone iOS 6,iPhone iOS 7和模拟器7.0建设与XCode 5.(在我的情况下,我将其设置为半透明的视觉外观。)

答案 2 :(得分:-1)

您可以通过在视图上设置frame属性,将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中有必要,我通常会进行此类视图调整。您需要进行此类调整并不常见,因此可以通过更改设置视图的方式来修复此问题。

如果没有关于如何设置视图的更多详细信息,则很难更具体。