向下和向上滚动后 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 的边界(查看屏幕截图)
在cellForRowAtIndexPath:方法中设置cell层anchorPointZ为行索引
cell.layer.anchorPointZ = indexPath.row;
我正在研究一些设计概念,但我遇到了这个问题 "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 的边界(查看屏幕截图)
在cellForRowAtIndexPath:方法中设置cell层anchorPointZ为行索引
cell.layer.anchorPointZ = indexPath.row;