【问题标题】:How to overlap UITableViewCells?如何重叠 UITableViewCells?
【发布时间】:2012-10-24 09:51:44
【问题描述】:

如果您查看屏幕截图,您会注意到每个 UITableViewCell 从顶部到上部 tableview 单元格有 20% 的重叠。

有什么方法可以重叠单元格吗?

【问题讨论】:

  • 非常感谢您参与提出实施想法而不是仅仅指出。对于您的信息,我尝试过使用i.stack.imgur.com/uSHXS.png 这种东西,但它不起作用,因为我有某些其他动画会扩大单元格之间的间隙。谢谢
  • @Tariq-iPHONEProgrammer - 你应该在你的问题中提到你的所有要求,因为如果有人回答他会回答你在你的问题中提出的问题......他不知道你还有什么要做的.

标签: ios objective-c uitableview overlap


【解决方案1】:

我从未尝试过,但这种逻辑会起作用。请记住,您不会接触到重叠区域。

1) 将您的子视图添加到cell.contentView,确保子视图高度大于您的tableView 的rowHeight

float overlapHeight  = 10.0;

subView.frame = CGRectMake(0.0, -10.0, 
                  your_subview_width, rowHeight + overlapHeight);

2) 添加此代码,这样您的单元格就不会剪切其框架之外的内容

cell.clipsToBounds = NO;
cell.contentView.clipsToBounds = NO;

3) 现在您的单元格将重叠,但单元格的边界周围会有一个剪辑标记。为了避免实现 willDisplayCell 委托函数

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = [UIColor clearColor];
}

【讨论】:

  • 是的,谁投反对票他应该解释他为什么这样做,否则他只是在玩弄它。
  • 这个方法在ios7好像不行?一切仍在剪辑中。
  • 知道了,别忘了添加 cell.contentView.superview.clipsToBounds = NO; (iOS7)
  • 在我的情况下它的工作,但表中的视图重叠不同的方式,我想要。是否可以知道单元格何时添加到视图中,以便我可以重新组织它们?
  • cell.layer.zPosition = indexPath.row;使当前单元格落后于前一个单元格
【解决方案2】:

通过将单元格组成两部分,可以在视觉上实现重叠效果:顶部的窄部分和底部的宽部分。底部很简单:它是一个灰色的矩形,里面有一个文本/图像组件。诀窍在于顶部的部分。

顶部的高度等于整个彩色标签的高度。您的程序可以将两个图像之一放在那里 - 要么是代表前一个单元格底部的灰色窄条顶部的选项卡,要么是棕色背景顶部的选项卡。在您的tableView:cellForRowAtIndexPath: 中检查row。如果为零,则选择棕色背景的图像;否则,请选择顶部背景中带有灰色条的图像。

【讨论】:

    【解决方案3】:

    无需重叠单元格。您的顶部单元格应如下所示:

    所有剩余的单元格应如下所示:

    您的tableFooterView 应该只是一个灰色条(单元格的“底部”)

    【讨论】:

    • 我已经尝试过这种方法,但问题是您正在从底部剪切图像。但我有某些其他动画为此我需要完整的单元格图像。可以说,如果我要触摸任何单元格,那么我必须扩大两个单元格之间的间隙,这就是我无法裁剪图像的原因:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 2012-07-25
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多