UITableViewController的上边距

ago*_*ugh 39 iphone cocoa-touch iphone-sdk-3.0

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

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

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

sun*_*ity 99

以编程方式修复它:

   - (void)viewDidLoad {
       UIEdgeInsets inset = UIEdgeInsetsMake(20, 0, 0, 0);
       self.tableView.contentInset = inset;
   }
Run Code Online (Sandbox Code Playgroud)

  • @ chuckp16你也可以添加`self.tableView.scrollIndicatorInsets = inset;` (4认同)
  • (64,0,0,0)最适合标准UINavigationBars(无提示). (4认同)
  • 这很好用,但滚动条有点搞砸了.它们在这里的导航栏下方延伸.这就像我们需要更改框架而不是仅仅将edgeInset添加到scrollview.但重新构建不起作用 (2认同)

Hen*_*son 7

这个"隐藏在导航栏后面"的问题是由于iOS 7自动使用全屏布局.请参阅iOS 7过渡指南.

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

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


pau*_*erd -1

您可以通过设置视图上的frame 属性将UITableView 的框架设置为显式X、Y 位置。或者,您可以使用界面生成器更改相同的属性,具体取决于您是通过 IB 还是在代码中添加了表格视图。

例如。

myTable.frame = CGRectMake(0.0, myTable.frame.origin.y + NAV_BAR_HEIGHT, myTable.frame.size.width, myTable.frame.size.height);
Run Code Online (Sandbox Code Playgroud)

这会将表格 myTable(指向 UITableView 的指针)定位在导航栏下方,您可能还需要相应地调整表格的高度。我用常量指示的导航栏的高度是 44.0。

如果在负责的视图控制器的 viewWillAppear 中需要的话,我通常会进行这种类型的视图调整。您需要进行此类调整的情况并不常见,因此您可以通过更改视图的设置方式来解决此问题。

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