如何使细胞重叠?

时间:2015-03-07 10:19:49

标签: ios uitableview

我想让细胞重叠。

enter image description here

我做的是 调整tableview的contentSize:

int count = [self.tableView numberOfRowsInSection:0];
self.tableView.contentSize = CGSizeMake(self.view.frame.size.width ,(100 * count - 30 * (count - 1)));

并设置cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
    if (!cell) {
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
      cell.contentView.backgroundColor = [UIColor orangeColor];
    }
    if (indexPath.row != 0) {
      UITableViewCell *currentCell = [tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:indexPath.row + 1 inSection:0]];
      [currentCell setFrame:CGRectMake(0, - 30, self.view.frame.size.width, 100)];
    }
    return cell;
}

但是当我测试时,这不起作用。

有任何帮助吗?感谢。

1 个答案:

答案 0 :(得分:1)

对您的代码感兴趣的是,您在tableView:cellForRowAtIndexPath:内手动设置的值将被UITableViewController布局方法覆盖。

您不应该直接编辑表视图单元格的框架,因为这是由UITableViewController在内部设置的属性。您应该只使用UITableViewDelegate协议的方法与此进行交互。 (tableView:heightForRowAtIndexPath:,...)

恕我直言,实现您所描述的内容的最佳方式(最干净的方法)是继承UICollectionView而不是UITableView并定义自定义布局。

但是,如果你想采用hacky方式,你可以通过许多不同的方式实现明显的行重叠。

举个例子,您可以创建两个不同的行类型,一个高度为30,另一个高度为70,其中第一个表示行的重叠部分,第二个表示行的不重叠部分。然后将第一个类型用于偶数行,将第二个类型用于奇数行。

希望这有帮助。

P.S。如果我的英语不是最好的话,我真的很抱歉