UITableView ContentInsets水平滚动内容

我想要一些剩余的空间,10像素,以UITablViewcCell 。 我写下面的代码,但水平滚动的内容。 我不要那个。

 self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(0.0, 0.0, 130.0, 768.0)]; self.horizontalTableView.contentInset = UIEdgeInsetsMake(0.0, 10.0, 0.0, 0.0); 

我是否需要使用tableview的contentOffset contentSize属性。

我认为最好的解决scheme是创build子类UITableViewCell并在layoutSubviews方法中设置其子视图的框架,以适应您的间距要求。 这将是更清洁和可扩展的。 仔细看看tableview单元格是一个很好的解读。

但是也有一些捷径,各有其缺点:

  1. 设置单元格的缩进

    -(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath

    这种方法将添加缩进到您的单元格内容(左边距)。 但是细胞分离器将占据细胞的实际宽度,即表格宽度。 所以你需要将分隔符样式设置为none,这样就不会显示。 但如果你需要一个细胞分离器不适用。

  2. 减less整个tableViews框架的大小

    这是最简单的方法,而且非常明显,但是当你在单元格和tableView之间需要一个边距的时候,它是蹩脚的。

正如你所做的那样,设置contentInset,你应该已经注意到它在Docs中的讨论。

使用此属性添加到内容周围的滚动区域。 单位的大小是点。 默认值是UIEdgeInsetsZero。

我认为玩contentOffset和contentSize将有助于实现利润率,但是对于我而言,更改这些值从来没有任何效果。 可能像安德烈所说的那样,他们可能会在内部pipe理。 但我很想听到更多关于这些属性及其反映的行为。

编辑

contentOffset和contentSize是从UIScrollViewinheritance而来的,在UITableView中和UIScrollView的子类一样。

另一种可行的方法是,不是设置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 ,因此没有问题。

快乐编码..!

你的描述对我来说不是很清楚,所以我可能完全不在这里。 但是我会猜测,并且还要求你澄清一下,如果不正确。

你设置tableView的contentInset,我猜测它的工作是在左边设置一个边距。 但我认为它导致tableView滚动,因为你没有减less内部视图的宽度。

看起来UITableView有一个奇怪的缺陷,所以边缘插图只能用于顶边和底边。 最好的(但依然丑陋的)解决scheme是转移单元格中的内容。

contentOffsetcontentSize属性不应该在表中手动更改,这是有点内部的东西。