我想让细胞重叠。
我做的是 调整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;
}
但是当我测试时,这不起作用。
有任何帮助吗?感谢。
答案 0 :(得分:1)
对您的代码感兴趣的是,您在tableView:cellForRowAtIndexPath:
内手动设置的值将被UITableViewController布局方法覆盖。
您不应该直接编辑表视图单元格的框架,因为这是由UITableViewController在内部设置的属性。您应该只使用UITableViewDelegate协议的方法与此进行交互。 (tableView:heightForRowAtIndexPath:
,...)
恕我直言,实现您所描述的内容的最佳方式(最干净的方法)是继承UICollectionView而不是UITableView并定义自定义布局。
但是,如果你想采用hacky方式,你可以通过许多不同的方式实现明显的行重叠。
举个例子,您可以创建两个不同的行类型,一个高度为30,另一个高度为70,其中第一个表示行的重叠部分,第二个表示行的不重叠部分。然后将第一个类型用于偶数行,将第二个类型用于奇数行。
希望这有帮助。
P.S。如果我的英语不是最好的话,我真的很抱歉