9

我想要一些剩余的空间,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);

我需要使用contentOffset contentSizetableview的属性吗?

4

4 回答 4

5

我认为最好的解决方案是创建子类 UITableViewCell 并设置其子视图的框架layoutSubviews以满足您的间距要求。这将更加清洁和可扩展。仔细看看 tableview 单元格是一个很好的阅读。

但是也有一些捷径,每个捷径都有自己的缺点:

  1. 为单元格设置缩进

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

    此方法将为您的单元格内容添加缩进(左边距)。但是单元格分隔符会占据单元格的实际宽度,即表格宽度。因此,您需要将分隔符样式设置为无,以便不会显示。但如果您需要电池分隔器,则不适用。

  2. 减小整个 tableViews 框架大小

    这是最简单且非常明显的方法,但是当您需要单元格和 tableView 之间的边距时,它就很糟糕了。

设置 contentInset 后,您应该已经注意到Docs中有关它的讨论。

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

我认为使用 contentOffset 和 contentSize 将有助于实现边距,但对我来说,更改这些值从来没有任何效果。可能正如安德烈所说,他们可能在内部进行管理。但我很想听到更多关于这些属性及其反映的行为的信息。

编辑

contentOffset 和 contentSize 是从 UIScrollView 继承的,在 UITableView 中的含义相同,因为它是 UIScrollView 的子类。

于 2013-08-07T10:05:26.367 回答
2

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:33:01.943 回答
0

似乎有一个奇怪的错误,UITableView所以边缘插图仅适用于顶部和底部边缘。最好的(但仍然很丑陋)的解决方案是移动单元格中的内容。

contentOffset并且contentSize属性不应该在表格中手动更改,这是内部的事情。

于 2013-08-07T07:17:05.337 回答
0

你的描述对我来说不是很清楚,所以我可能完全不在这儿了。但我会猜测一下,如果不正确,还请您尝试澄清更多。

您设置了 tableView 的 contentInset,我猜它可以在左侧设置边距。但我认为它导致 tableView 滚动,因为你没有减少内部视图的宽度。

于 2013-02-19T07:22:05.263 回答