向下和向上滚动后 TableView 单元格与 UIView 重叠

TableView Cells Overlapping UIView After Scrolling Down and Up

我正在研究一些设计概念,但我遇到了这个问题 "bug."

知道为什么会这样吗?我已经遍历了不同的东西,但仍然找不到问题的根源或解决方案。

这个 "circle" 的价格,重叠在它底部的另一个单元格是我的设计。这一切都很好,但是,当我向下滚动并向上滚动时,"older" 单元格突然与 "circle."

重叠

请看截图。非常感谢任何帮助!!!

有没有人以前遇到过这种情况?

iOS9 - Xcode 7.3.1

编辑:

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    if let cell = tableView.dequeueReusableCellWithIdentifier("CategoryCell") as? CategoryCell {

        cell.selectionStyle = .None
        cell.configureCell(dishes[indexPath.row])

        return cell

    } else {
        return UITableViewCell()
    }

}

编辑 2: 进一步分析后,我相当确信这与身高无关?我尝试使用不同的高度,但仍然得到相同的结果。

问题是,它加载完美,即使向下滚动,一切都很好。直到我向上滚动,这就是问题开始出现的地方。

将 Clip SubViews (Cell) 设置为 true 将在加载时剪切所有内容,因此我将其设置为 false。

剩下的问题是,向上滚动时如何处理裁剪?

编辑 3: 我想我现在明白了这个问题,但是我仍然不太确定如何解决它。

CircleView 放置在一个单元格上,该单元格将与其下方的另一个单元格重叠。设置 clipsToBounds、高度或将其置于最前面将对其下方的单元格没有影响,因为它在向上滚动时会远离显示。

有人知道如何以某种方式重新绘制它,就像它刚刚加载一样(因为加载,一切正常)?或者我可能在其他地方缺少 clipsToBounds 设置?

我认为解决方案与此有关:How to stop UITableView from clipping UITableViewCell contents in iOS 7

但是,此解决方案不适用于 ios9。

您是否尝试过为 tableView 设置一个 estimatedRowHeight?此外,您可以使用函数 heightForRowAtIndexPath 和 return UITableViewAutomaticDimension。这应该会自动标注每一行以填充圆圈大小。

编辑:如果你想把圆圈放在其他所有东西的前面,试试这个:

YourLabel.layer.zPosition = 1;
self.view.bringSubviewToFront(YourLabel);

问题与单元格的高度有关。它不会为您动态调整。

您可以尝试将剪辑设置为 tableView 的边界(查看屏幕截图)

clipsToBounds option

在cellForRowAtIndexPath:方法中设置cell层anchorPointZ为行索引

cell.layer.anchorPointZ = indexPath.row;