【问题标题】:Top margin on UITableViewControllerUITableViewController 的上边距
【发布时间】:2010-12-05 08:36:10
【问题描述】:

我有一个 TabBarController,其中一个选项卡包含一个子视图,它是一个导航控制器。然后我将一个继承表单 UITableViewController 的视图加载到导航控制器中。

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

谁能建议如何将 UITableViewController 向下移动?

【问题讨论】:

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


    【解决方案1】:

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

    这有点不妥,因为它在模拟器中显示为 iOS 6 中的样子(布局方面;即不隐藏在后面)。

    你的导航栏是半透明的?我的是,将其设置为非半透明可修复 Iphone iOS 6、iPhone iOS 7 和使用 XCode 5 构建的 Simulator 7.0。(在我的情况下,我将其设置为半透明以获得视觉外观。)

    【讨论】:

    • 哈!刚刚检查了日期...这与 iOS 7 布局无关,是吗? :) 啊。好吧,我想我可以留下它,以防这是人们现在搜索该问题的第一个热门话题,就像我一样。
    • 感谢您离开这里。它帮助了我。
    • 即使原始问题不是这种情况,但这是一个非常有用的答案!
    【解决方案2】:

    以编程方式修复它:

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

    【讨论】:

    • 这很好用,但是滚动条有点乱。它们在此处的导航栏下方向上延伸。这就像我们需要改变框架而不是仅仅在滚动视图中添加一个 edgeInset。但是这种重新构图不起作用
    • @chuckp16 也可以加self.tableView.scrollIndicatorInsets = inset;
    • (64, 0, 0, 0) 最适合标准 UINavigationBars(无提示)。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-27
      相关资源
      最近更新 更多