除垂直方向外,UITableView contentInset使表格视图水平滚动

时间:2013-04-28 07:22:49

标签: iphone ios uiscrollview uitableview

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

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

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

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

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

在模拟中,我用虚线---

标记了所需的contentInset

enter image description here

感谢。

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

看起来你需要做两件事:

  1. 将表格视图添加到容器视图,并使表格视图frame更薄(添加左右边框)。
  2. 仅为顶部和底部添加contentInset

答案 2 :(得分:0)

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

答案 3 :(得分:0)

另一种可行的方法是,不是设置tableView框架,而是设置单元格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,因此没有任何问题。

快乐的编码..!