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

问题描述 投票:3回答:3

我正在玩一些设计概念而且我遇到了这个“错误”。

知道为什么会这样吗?我已经迭代了不同的东西,仍然无法找到罪魁祸首或解决方案。

价格的这个“圆圈”与其底部的另一个单元重叠是我的预期设计。这一切都很好,但是,当我向下滚动并向后滚动时,“较旧的”单元突然重叠“圆圈”。

请看截图。任何帮助深表感谢!!!

有谁之前经历过这个吗?

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()
    }

}

Mobile Screenshot

编辑2:经过进一步分析,我确信这与高度无关?我玩过不同的高度,但仍然得到相同的结果。

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

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

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

StoryBoard

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

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

任何人都有一个想法如何以某种方式重新绘制它就像刚刚装载一样(因为onload,事情正在发挥作用)?或者在其他地方是否有一个clipToBounds设置我错过了?

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

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

ios swift uitableview ios9 xcode7
3个回答
5
投票

在cellForRowAtIndexPath:方法中将单元格图层anchorPointZ设置为行索引

cell.layer.anchorPointZ = indexPath.row;

0
投票

问题与细胞的高度有关。它不会动态地为您调整。

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

clipsToBounds option


0
投票

您是否尝试为tableView设置estimatedRowHeight?此外,您可以使用函数heightForRowAtIndexPath并返回UITableViewAutomaticDimension。这应该自动标注每一行以填充圆的大小。

编辑:如果你想将圆圈带到其他一切的前面,试试这个:

YourLabel.layer.zPosition = 1;
self.view.bringSubviewToFront(YourLabel);
© www.soinside.com 2019 - 2024. All rights reserved.