14

我正在代码中创建一个 UITableViewController 并将其推送到导航堆栈的顶部。它的表格视图旨在仅显示一个简单的文本项目列表。

我需要在我的 UITableViewController 的 init 方法中添加一些 contentInset 到我的表格视图中

self.tableView.contentInset = UIEdgeInsetsMake(7.0f, 5.0f, 7.0f, 5.0f);

但是,当我加载表格视图时,左右 contentInset 似乎实际上将我的表格视图的宽度拉伸了 10。我现在看到了一个小的水平滚动区域。我不想在我的表格视图上进行任何类型的水平滚动。如果我删除 contentInset 代码,我的表格视图的行为很简单,即只提供垂直滚动。我怎么能保持这样,但我的 contentInset 就位?我尝试在 viewWillAppear 中将 contentSize.width 减少 10,但没有效果。

这似乎是重复的,但没有可接受的答案:UITableView ContentInsets scrolling content Horizo​​ntal

在模拟中,我用虚线标记了所需的 contentInset ---

在此处输入图像描述

谢谢。

4

4 回答 4

4

我最终只设置了顶部和底部的插图。为了实现左右插图的外观和感觉,我创建了与屏幕一样宽的自定义单元格。但实际的单元格内容仅限于自定义单元格内的一个稍窄的子视图。因此,子视图的左侧和右侧都有剩余空间。

于 2013-05-14T21:27:09.773 回答
1

看起来你需要做两件事:

  1. 将表格视图添加到容器视图中,并使表格视图frame更薄(添加左右边框)。
  2. contentInset只为顶部和底部添加。
于 2013-04-28T08:47:18.640 回答
0

也许您应该将scrollView 的bounces 属性设置为YES。并且不要设置 contentInset。

于 2013-04-28T08:15:17.177 回答
0

tableView另一种可行的方法是,您可以为 cell's 设置框架,而不是设置框架,contentView就像这样,

- (void) layoutSubviews
{
    [super layoutSubviews];

    CGRect frame = self.contentView.frame;
    frame.size.width = frame.size.width * 0.9; //90% of total width
    frame.origin.x = self.center.x - (frame.size.width/2); //center the contentView
    self.contentView.frame = frame;
}

使用上述内容,您可以添加单元格所需的任何左侧或右侧或左侧填充。并且所有子视图都将添加到 中contentView,因此那里没有问题。

快乐编码..!

于 2013-09-14T14:26:25.153 回答